2012-12-02 117 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

相关问题