我知道這是一個常見問題,我環顧四周,嘗試了很多事情,但似乎無法使其正常工作。使用ViewState通過回發來維護財產狀態
我有一個下拉列表,列出其元素的升序,我添加了一個複選框,應該顛倒下拉列表的順序。
我試圖屬性沿的行添加到下拉列表控件,東西:
public bool isReverse = false;
public bool reverse
{
get
{
return ViewState["isReverse"] != null ? (bool)ViewState["isReverse"] : false;
//return ViewState["isReverse"] != null ? (bool)ViewState["isReverse"] : isReverse;
//I have also tried returning isReverse, but its the same behaviour
}
set
{
ViewState["isReverse"] = value;
isReverse = value;
}
}
有可能是多餘的代碼在那裏。我的複選框有一個事件處理程序,執行以下操作:
protected void isReverse_CheckedChanged(object sender, EventArgs e)
{
CheckBox myBox = (CheckBox)sender;
SortableCustomDropDownLIst myList = sddl;
if (myBox.Checked)
{
myList.reverse = true;
}
else
{
myList.reverse = false;
}
}
我最初的解決方案沒有使用ViewState的,因此,每我們有一個回發時重置回假,它絕不會以相反的順序列出
。我的代碼檢查這個屬性,並確定是否需要顛倒負責提供下拉列表的ArrayList。
我不確定爲什麼我的程序有以下行爲:
加載頁面:升序排列,複選框取消選中
檢查複選框:仍然升序,選中複選框
取消選中複選框:降序排列,複選框選中
檢查複選框:升序排列,選中複選框
... [R EPEAT。
這些集合僅由複選框的事件處理函數調用,get僅在排序下拉列表時調用。我誤解了一些東西,我不明白爲什麼這不起作用,除非我誤解了ViewState的工作方式。
我認爲它與第一個事件句柄如何觸發屬性爲true有關,但ViewState尚未設置,所以它不記得任何東西。
這一行完成任何事情:'SortableCustomDropDownLIst myList = sddl;'這可能是爲什麼事情沒有工作? – 2014-10-28 02:00:09
@SteveWellens是的,我會盡快刪除這些東西。我不確定某件事情,寫了很多無稽之談。我相信處理程序正在按照我想要的方式工作。與該物業有關。 – user2859406 2014-10-28 02:02:09
爲什麼不在客戶端腳本中完成此操作? – theMayer 2014-10-28 02:39:29