我在某些列前面创建了一个带有复选框的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>
谢谢,
史蒂夫
答案 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。用户在点击该回复时获得回发是非常违反直觉和令人沮丧的。