2017-05-30 60 views
0

以下保存的數據是ASPX代碼:DataGrid中無法通過尋呼

<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

這是正確的!

如果從Datagrid項目開始,則只有當前綁定頁面。

你必須保存ViewState在每個回傳中檢查數據(當你改變頁面時)。

如果記錄數不是太高,可以禁用datagrid上的分頁。