访问gridview单元格

时间:2014-01-28 06:15:27

标签: c# asp.net .net gridview

如何访问特定选定行和已检查行的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的数据源由Page_Load上的强类型数据集设置。现在在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" />

我这里有两个问题

i)如果在复选框

中选中了行,则访问gridview单元格

ii)在我的GV选择中,它会自动设置为AutoPostback,我要禁用它,因为它正在清除所选的复选框。

3 个答案:

答案 0 :(得分:1)

更新面板会自动回发,但您可以使用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设置为false ...

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

答案 1 :(得分:0)

您需要像这样绑定gridview

if (!Page.IsPostBack)
{
   GridView1.DataSource = source;
   GridView1.DataBind();
}

然后试试。当然它会给你预期的结果。

答案 2 :(得分:0)

尝试使用 CommandArgument ='&lt;%#Container.DataItemIndex%&gt;'属性。
它返回所选GridView行的索引。
然后在单击事件上,您可以编写逻辑以获取所选gridview行的特定行和列的值 例如,如果要访问第1行的第3列,则可以编写 GridView.Rows [0] .Cells [2] .Text 在click事件或checkedchange事件中获取值。