2012-11-27 69 views
0

當我在我的頁面(1)上檢查了[複選框]數據,然後通過分頁(頁面的底部按鈕,如[1234])進入下一頁(2))然後在第(2)頁上檢查數據。在點擊下一頁後在上一頁中取消選中的複選框

當我回到頁面(1)時,它仍然未選中,因爲我沒有檢查任何東西!

所有的東西都保持原來的位置。所有的頁面都沒有選中。 從1頁到第2頁(第1頁的複選框忘記了他的值並取消選中)後,當從第2頁到第1頁時發生同樣的事情。 抱歉,我的英語不好,粗糙。 有什麼建議?

+0

分頁,您使用的是一些中繼控制?請在這裏貼上您的PageIndexChanging代碼 – sajanyamaha

+0

兄弟我需要很多代碼來審查,但它會幫助我瞭解你....檢查這個PLZ –

+0

(GridViewRow在ListerGrid.Rows中彈出) { CheckBox chkPop =(CheckBox)pop.FindControl(「chkPop」); if(chkPop.Checked) NameValueCollection nvc = new NameValueCollection(); string strPOP =((Label)pop.FindControl(「lblPOP」))。Text; DataTable td = spp_db.getPop(ddlSelCat.SelectedValue,ddlSection.SelectedValue,ddlPJP_DSR.SelectedValue, ddlTown.SelectedValue,ddlLocality.SelectedValue,ddlSubLocality.SelectedValue,strPOP); –

回答

1

如果一個GridView或Repeater控件試試這個

GridView的HTML

<asp:GridView ID="GridView1" runat="server" 
AutoGenerateColumns="False" AllowPaging="True" 
PageSize="5" Width="324px" DataKeyNames="CategoryID" 
OnPageIndexChanging="GridView1_PageIndexChanging"> 
<Columns> 
<asp:BoundField DataField="CategoryID" HeaderText="CategoryID" /> 
<asp:BoundField DataField="CategoryName" HeaderText="CategoryName" /> 
<asp:TemplateField HeaderText="Select"> 
<ItemTemplate> 
<asp:CheckBox ID="CheckBox1" runat="server" /> 
</ItemTemplate> 
</asp:TemplateField> 
</Columns> 
</asp:GridView> 

CS代碼

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    RememberOldValues(); 
    GridView1.PageIndex = e.NewPageIndex; 
    BindData(); 
    RePopulateValues(); 
} 

而且

private void RememberOldValues() 
{ 
    ArrayList categoryIDList = new ArrayList(); 
    int index = -1; 
    foreach (GridViewRow row in GridView1.Rows) 
    { 
    index = (int) GridView1.DataKeys[row.RowIndex].Value; 
    bool result = ((CheckBox)row.FindControl("CheckBox1")).Checked; 

    // Check in the Session 
    if (Session[CHECKED_ITEMS] != null) 
    categoryIDList = (ArrayList)Session[CHECKED_ITEMS]; 
    if (result) 
    { 
    if (!categoryIDList.Contains(index)) 
    categoryIDList.Add(index); 
    } 
    else 
    categoryIDList.Remove(index); 
    } 
    if (categoryIDList != null && categoryIDList.Count > 0) 
    Session[CHECKED_ITEMS] = categoryIDList; 
} 

而且

private void RePopulateValues() 
{ 
    ArrayList categoryIDList = (ArrayList)Session[CHECKED_ITEMS]; 
    if (categoryIDList != null && categoryIDList.Count > 0) 
    { 
    foreach (GridViewRow row in GridView1.Rows) 
    { 
    int index = (int)GridView1.DataKeys[row.RowIndex].Value; 
    if (categoryIDList.Contains(index)) 
    { 
    CheckBox myCheckBox = (CheckBox) row.FindControl("CheckBox1"); 
    myCheckBox.Checked = true; 
    } 
    } 
    } 
} 

將數據綁定代碼

編輯

/* QUERY */ 
private const string QUERY_SELECT_ALL_CATEGORIES = "SELECT * FROM Categories"; 

private void BindData() 
{ 
    SqlConnection myConnection = new SqlConnection(ConnectionString); 
    SqlDataAdapter ad = new SqlDataAdapter(QUERY_SELECT_ALL_CATEGORIES, 
    myConnection); 
    DataSet ds = new DataSet(); 
    ad.Fill(ds, "Categories"); 
    GridView1.DataSource = ds; 
    GridView1.DataBind(); 
} 

有關詳細信息清潔香港這個Maintaining_State_of_CheckBoxes

+0

bro是什麼檢查項目????? –

+0

哦,我忘了把查詢變量看成高於 – sajanyamaha

+0

的BindData()函數的上面,它對我來說非常有幫助......親愛的我幾乎要完成我的工作。 –

0

當您從一個頁面導航到另一個頁面時,您的頁面將刷新,因此無法保留複選框的值。如果您想這樣做,您必須從代碼後面執行此操作,請編寫代碼 Checkbox.Checked = True in! IsPostback根據您的有效條件。

+0

已檢查此代碼plz –

+0

foreach(GridViewRow在ListerGrid.Rows中彈出) { CheckBox chkPop =(CheckBox)pop.FindControl(「chkPop」); if(chkPop.Checked) NameValueCollection nvc = new NameValueCollection(); string strPOP =((Label)pop.FindControl(「lblPOP」))。Text; DataTable td = spp_db.getPop(ddlSelCat.SelectedValue,ddlSection.SelectedValue,ddlPJP_DSR。SelectedValue, ddlTown.SelectedValue,ddlLocality.SelectedValue,ddlSubLocality.SelectedValue,strPOP); –

相關問題