C# 访问gridview单元格

C# 访问gridview单元格,c#,asp.net,.net,gridview,C#,Asp.net,.net,Gridview,如何访问特定选定和选中行的gridview单元格。下面是代码 <asp:GridView ID="GridView1" runat="server" AutoGenerateSelectButton="True"> <Columns> <asp:TemplateField HeaderText="IsApproved"> <ItemTemplate> <asp:CheckBox ID="ch

如何访问特定选定和选中行的gridview单元格。下面是代码

<asp:GridView ID="GridView1" runat="server" AutoGenerateSelectButton="True">
 <Columns>
     <asp:TemplateField HeaderText="IsApproved">
         <ItemTemplate>
           <asp:CheckBox ID="chkApproved" runat="server" CommandName="Approve" />
         </ItemTemplate></asp:TemplateField></Columns></asp:GridView>
 <asp:RadioButtonList ID="RadioButtonList1" runat="server"  RepeatDirection="Horizontal">
    <asp:ListItem Text="Approve" Value="1"></asp:ListItem>
    <asp:ListItem Text="Reject" Value="2"></asp:ListItem>
</asp:RadioButtonList>

gridview的数据源由加载页面上的强类型数据集设置。现在在btnSubmit上,如果选中,我想将所选行插入到我的数据库表中

protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if (RadioButtonList1.SelectedValue == "1")
        {
            foreach (GridViewRow row in GridView1.Rows)
            {
                var chk = row.FindControl("chkApproved") as CheckBox;
                   if (chk.Checked)
                    {
                      DataSet1TableAdapters.tbl_ApproveTableAdapter ta = new DataSet1TableAdapters.tbl_ApproveTableAdapter();
                      DataSet1.tbl_ApproveDataTable dt = new DataSet1.tbl_ApproveDataTable();
                      ta.Insert()// here I've to specify the cells of GV
                    }
            }
        }
    }
<asp:Button ID="btnSubmit" runat="server" OnClick="btnSubmit_Click" Text="Submit" />
protectedvoid btnSubmit\u单击(对象发送方,事件参数e)
{
如果(RadioButtonList1.SelectedValue==“1”)
{
foreach(GridView1.Rows中的GridViewRow行)
{
var chk=行。FindControl(“chkaprovided”)作为复选框;
如果(已检查)
{
DataSet1TableAdapters.tbl_ApprovableAdapter ta=新的DataSet1TableAdapters.tbl_ApprovableAdapter();
DataSet1.tbl_ApproveDataTable dt=新的DataSet1.tbl_ApproveDataTable();
ta.Insert()//这里我必须指定GV的单元格
}
}
}
}
我这里有两个问题

i) 如果选中复选框中的行,则访问gridview单元格

ii)在我的GV select上,它会自动设置为AutoPostback,我想禁用它,因为它正在清除所选复选框。
.

更新面板自动回发,但您可以使用AsyncPostBackTrigger禁用自动回发。将ChildrenAsTriggers属性设置为true,将UpdateMode属性设置为Conditional

<asp:UpdatePanel ID="myPanel" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional">
<Triggers>        
    <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />    
</Triggers>  
    <ContentTemplate>
// put your code here to avoid autopost back
    </ContentTemplate>
</asp:UpdatePanel>

//把你的代码放在这里以避免自动回邮
另一种禁用autopostback的方法是将autopostback设置为false

<asp:RadioButtonList ID="RadioButtonList1" AutoPostBack="False">

您需要像这样绑定gridview

if (!Page.IsPostBack)
{
   GridView1.DataSource = source;
   GridView1.DataBind();
}
试试看。当然,它会给出您期望的结果。

尝试在中使用CommandArgument=''属性。
它返回所选GridView行的索引
然后单击事件,您可以编写逻辑来获取所选gridview行的特定行和列的值。
例如,如果您想访问第一行的第三列,您可以编写
GridView.Rows[0]。单元格[2]。单击事件或checkedchange事件中的文本以获取值。

获取所选复选框的代码工作正常。您能告诉我们您在GridView中绑定了哪些事件吗?我想ItemCommand会绑定吗?