4
我有一個telerik-radgrid,我使用SelectAll。對於SelectAll我使用了複選框。分頁後,檢查的狀態會關閉。 即使在分頁後,我們如何保持複選框的檢查狀態仍可保留。在Telerik RadGrid控件中尋呼時持久化CheckBox狀態
我有一個telerik-radgrid,我使用SelectAll。對於SelectAll我使用了複選框。分頁後,檢查的狀態會關閉。 即使在分頁後,我們如何保持複選框的檢查狀態仍可保留。在Telerik RadGrid控件中尋呼時持久化CheckBox狀態
嗨解決了這一....
呼叫複選框OnCheckedChanged事件 店checkChanged在視圖狀態和項目檢查值databond讀取視圖狀態的值。
在這裏,我們擁有的.cs代碼: -
公共常量字符串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;
}
}
}
}
}
}
我假設你特別想在分頁時保持用戶的選擇,默認情況下Telerik RadGrid使用Postback。但是,它們應具有Ajax功能,或者您可以將所有選擇保存在頁面事件中。然後定位到上一個或下一個調用的事件。 – Greg
你能提供一個例子嗎?我可能嘗試過類似的東西。 –