ASP.NET Gridview - Checkbox - 选择多行并获取记录

时间:2010-12-09 00:05:46

标签: c# asp.net gridview

我在某些列前面创建了一个带有复选框的gridview。我需要获取用户正在选择的数据并构建一个xml文件。

我无法弄明白。有人可以用C#帮我解决。

到目前为止,这是我的代码。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="ObjectDataSource1"  AllowPaging="True" BackColor="#DEBA84" BorderColor="#DEBA84" 
BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" >
<RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />

<Columns>       

<asp:TemplateField>
<HeaderStyle HorizontalAlign="left" />
<HeaderTemplate>
<asp:CheckBox ID="chkSelectAll" ToolTip="Click here to select/deselect all rows"
runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" />
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Service Point">
<ItemTemplate>                  
<%# Eval("SERVICEPOINTID")%>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Left" />
<ItemStyle HorizontalAlign="Left" />
</asp:TemplateField>

<asp:TemplateField HeaderText="Start Date">
<ItemTemplate>
<%# Eval("STARTTIME")%>
</ItemTemplate>                 
</asp:TemplateField>

谢谢,

史蒂夫

2 个答案:

答案 0 :(得分:1)

您可以使用以下代码逐个获取已检查行的值。

foreach (GridViewRow rowItem in GridView1.Rows)
  {
     var chk = (CheckBox)(rowItem.Cells[0].FindControl("chkSelectAll"));

     // chk.checked will access the checkbox state on button click event
     if (chk.Checked)
     {
         //get required values here
     }
  }

答案 1 :(得分:0)

ForEach(GridViewRow row in MyGridView.Rows)
{
  if (row.RowType == DataControlRowType.DataRow) //avoid header/footer rows.
  {
    var myCheckBox = (CheckBox)row.FindControl("chkSelect");
    //myCheckBox.Checked tells you if it's checked or not, yay!
    var myPrimaryKey = (GuidOrIntOrSomething)MyGridView.DataKeys[row.RowIndex].Value;
    //now you have your Key and the checkbox for whether the user has checked it 
    //and you can do your update/insert/delete/whatever against the DB.
  }
}

你真的应该处理使用Check All直接检查所有框所需的难以忍受的javascript。用户在点击该回复时获得回发是非常违反直觉和令人沮丧的。