DataGrid无法通过分页保存数据

时间:2017-05-30 13:10:57

标签: c# asp.net webforms

以下是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')");
        }
    }
}

1 个答案:

答案 0 :(得分:0)

没错!

如果从Datagrid项目开始,则只有当前绑定页面。

您必须在每次回发时保存ViewState检查数据(当您更改页面时也是如此)。

如果记录数不是太高,您可以在datagrid上禁用分页。