2012-12-02 119 views
0

我有列表視圖控件與複選框和複選框選擇所有與分頁更新面板 選擇 - 取消選擇所有工作正常,但在第1頁選擇所有元素選擇,但其他網頁選擇任何想法​​選擇/取消選擇列表視圖中的所有複選框與分頁

<asp:ListView ID="lstvw_all" runat="server" DataKeyNames="para" > 
             <LayoutTemplate> 
              <table cellpadding="3" cellspacing="0" id="tbl_pers"> 
               <tr class="rsgridh"> 
                <th> 
                 رقم الإداري 
                </th> 
                <th> 
                 الاسم 
                </th> 
                <th> 
                 مهمة العمل 
                </th> 
                <th> 
                 الفرع 
                </th> 
                <th> 
                 الدورة 
                </th> 
                <th> 
                 عدد المتدربين 
                </th> 
                <th> 
                 المبلغ المستحق 
                </th> 
                <th> 
                 <asp:CheckBox ID="cbSelectAll" runat="server" onclick="SelectAll(this);" /> 
                </th> 
               </tr> 
               <tr id="itemPlaceHolder" runat="server"> 
               </tr> 


              </table> 
             </LayoutTemplate> 
             <ItemTemplate> 
              <tr class="rsgridi"> 
               <td> 
                <%# Eval("per_no") %> 
               </td> 
               <td> 
                <%# Eval("per_name") %> 
               </td> 
               <td> 
                <%# Eval("job_desc") %> 
               </td> 
               <td> 
                <%# Eval("org_label") %> 
               </td> 
               <td> 
                <%# Eval("course_desc") %> 
               </td> 
               <td> 
                <%# Eval("cnt_all") %> 
               </td> 
               <td> 
                <%# Eval("intial_cost") %> 
               </td> 
               <td> 

                <asp:CheckBox runat="server" ID="cbSelected" Checked='<%# Selected(DataBinder.Eval(Container.DataItem,"para")) %>' ToolTip='<%# DataBinder.Eval(Container.DataItem,"para") %>' > 
                </asp:CheckBox> 
               </td> 
              </tr> 
             </ItemTemplate> 
             <AlternatingItemTemplate> 

             <tr class="rsgridai"> 
               <td> 
                <%# Eval("per_no") %> 
               </td> 
               <td> 
                <%# Eval("per_name") %> 
               </td> 
               <td> 
                <%# Eval("job_desc") %> 
               </td> 
               <td> 
                <%# Eval("org_label") %> 
               </td> 
               <td> 
                <%# Eval("course_desc") %> 
               </td> 
               <td> 
                <%# Eval("cnt_all") %> 
               </td> 
               <td> 
                <%# Eval("intial_cost") %> 
               </td> 
               <td> 

                <asp:CheckBox runat="server" ID="cbSelected" Checked='<%# Selected(DataBinder.Eval(Container.DataItem,"para")) %>' ToolTip='<%# DataBinder.Eval(Container.DataItem,"para") %>' s> 
                </asp:CheckBox> 
               </td> 
              </tr> 
             </AlternatingItemTemplate> 
            </asp:ListView> 
+1

你能在這裏粘貼PageIndexChanging代碼。 – sajanyamaha

回答

0

這不能做 - 當你在頁面一,其餘頁面不是實際存在。

當您要求選擇所有複選框意味着您所看到的。更改頁面後,其他複選框設置爲默認(可能未選中)

因此,重新設計您的用戶界面,爲您贏得了勝利。

0

這可以用一個調整來完成,這是GridView控件,轉換本作列表視圖或任何其他中繼控制

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

相關問題