當我在我的頁面(1)上檢查了[複選框]數據,然後通過分頁(頁面的底部按鈕,如[1234])進入下一頁(2))然後在第(2)頁上檢查數據。在點擊下一頁後在上一頁中取消選中的複選框
當我回到頁面(1)時,它仍然未選中,因爲我沒有檢查任何東西!
所有的東西都保持原來的位置。所有的頁面都沒有選中。 從1頁到第2頁(第1頁的複選框忘記了他的值並取消選中)後,當從第2頁到第1頁時發生同樣的事情。 抱歉,我的英語不好,粗糙。 有什麼建議?
當我在我的頁面(1)上檢查了[複選框]數據,然後通過分頁(頁面的底部按鈕,如[1234])進入下一頁(2))然後在第(2)頁上檢查數據。在點擊下一頁後在上一頁中取消選中的複選框
當我回到頁面(1)時,它仍然未選中,因爲我沒有檢查任何東西!
所有的東西都保持原來的位置。所有的頁面都沒有選中。 從1頁到第2頁(第1頁的複選框忘記了他的值並取消選中)後,當從第2頁到第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
bro是什麼檢查項目????? –
哦,我忘了把查詢變量看成高於 – sajanyamaha
的BindData()函數的上面,它對我來說非常有幫助......親愛的我幾乎要完成我的工作。 –
當您從一個頁面導航到另一個頁面時,您的頁面將刷新,因此無法保留複選框的值。如果您想這樣做,您必須從代碼後面執行此操作,請編寫代碼 Checkbox.Checked = True in! IsPostback根據您的有效條件。
已檢查此代碼plz –
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); –
分頁,您使用的是一些中繼控制?請在這裏貼上您的PageIndexChanging代碼 – sajanyamaha
兄弟我需要很多代碼來審查,但它會幫助我瞭解你....檢查這個PLZ –
(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); –