【问题标题】:Persisting CheckBox State While Paging in Telerik RadGrid Control在 Telerik RadGrid 控件中分页时保持复选框状态
【发布时间】:2015-12-24 14:20:51
【问题描述】:

我有一个 Telerik-radgrid,我在其中使用 SelectAll。对于 SelectAll,我使用了复选框。分页后检查状态将熄灭。 我们如何保持 Checkbox 的选中状态即使在分页后也可以保留。

【问题讨论】:

  • 我假设您特别希望在分页时保留用户的选择,默认情况下 Telerik RadGrid 使用回发。但是,它们应该具有 Ajax 功能,或者您可以保存页面事件上的所有选择。然后锚定到上一个或下一个调用的事件。
  • 你能举个例子吗?我可能尝试过类似的方法。

标签: c# asp.net telerik-grid


【解决方案1】:

你好解决了这个....

在复选框 OnCheckedChanged 事件中调用 checkChanged 将检查值存储在视图状态中,并在项目数据键上读取视图状态的值。

这里有 .cs 代码:-

public const string SELECTED_CUSTOMERS_INDEX = "UserIndex";

protected void CheckChanged(Object sender, System.EventArgs e)
{
    CheckBox box = (CheckBox)sender;
    GridDataItem item = (GridDataItem)box.NamingContainer;
    var rowIndex = item.ItemIndex;
    var idex =  radStoreUsers.MasterTableView.DataKeyValues[rowIndex];
    string datakey = idex["Id"].ToString();
    if (box.Checked)
    {
        PersistRowIndex(datakey);
    }
    else
    {
        RemoveRowIndex(datakey);
    }
}

private void PersistRowIndex(string chkId)
{
    if (!SelectedCustomersIndex.Exists(i => i == chkId))
    {
        SelectedCustomersIndex.Add(chkId);
    }
}

private void RemoveRowIndex(string chkId)
{
    SelectedCustomersIndex.Remove(chkId);
}

private List<string> SelectedCustomersIndex
{
    get
    {
        if (ViewState[SELECTED_CUSTOMERS_INDEX] == null)
        {
            ViewState[SELECTED_CUSTOMERS_INDEX] = new List<string>();
        }

        return (List<string>)ViewState[SELECTED_CUSTOMERS_INDEX];
    }
}

protected void radStoreUsers_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
    if (e.Item is GridDataItem)
    {
        GridDataItem item = e.Item as GridDataItem;
        CheckBox box = (CheckBox)item.FindControl("chkBox");
        if (item.OwnerTableView.DataMember == "Users")
        {
            if (SelectedCustomersIndex != null)
            {
                foreach(string id in SelectedCustomersIndex)
                {
                    if(item.GetDataKeyValue("Id").ToString() == id)
                    {
                        box.Checked = true;
                    }
                }
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    相关资源
    最近更新 更多