以下是ASPX代码:
<asp:datagrid id="gridcontestant" runat="server" CssClass="grd_standard"
DataKeyField="ASSIGNMENT_ID" AutoGenerateColumns="False"
AllowSorting="True" AllowPaging="True" BorderStyle="None" tabIndex="-1"
onpageindexchanged="gridcontestant_PageIndexChanged" PageSize="3">
<Columns>
<asp:BoundColumn DataField="ASSIGNMENT_CONTESTANT" HeaderText="Contestant ID"></asp:BoundColumn>
<asp:BoundColumn DataField="CONTESTANT_NAME" HeaderText="Contestant Name"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="">
<ItemTemplate>
<asp:CheckBox ID="chk" AutoPostBack="false" runat="server"></asp:CheckBox>
</ItemTemplate>
<HeaderStyle Width="50px"/>
</asp:TemplateColumn>
</Columns>
<PagerStyle CssClass="grd_ps_standard" Mode="NumericPages"/>
</asp:datagrid>
所有检查过的数据都需要保存到数据库中,但是当我点击保存按钮时我在DataGrid上遇到问题只是保存第一页。
以下是C#代码:
protected void btnSave_Click(object sender, EventArgs e)
{
DataGridItemCollection items;
CheckBox cb;
items = gridcontestant.Items;
for(var i = 0; i <= items.Count - 1; i++)
{
cb = ((CheckBox)(items[i].FindControl("chk")));
if(cb.Checked)
{
objDBInterface.masterTable = "QUESTION_ASSIGNMENT_JUDGE";
objDBInterface.primaryField = "JUDGE_ID";
objDBInterface.strConn = mag.ConnStr();
string newIDJudge = objDBInterface.getNewCode();
objDBInterface.ExecSQL("INSERT INTO QUESTION_ASSIGNMENT_JUDGE VALUES ('"
+ newIDJudge + "', '"
+ mag.ADOQuoteField(items[i].Cells[7].Text) + "', '"
+ item + "', '"
+ Session["varSegID"].ToString() + "', 'N', NULL, NULL, 'N', NULL, 'F')");
}
}
}
答案 0 :(得分:0)
没错!
如果从Datagrid项目开始,则只有当前绑定页面。
您必须在每次回发时保存ViewState检查数据(当您更改页面时也是如此)。
如果记录数不是太高,您可以在datagrid上禁用分页。