我有一個頁面,有5個用戶控件相同的類型。每個用戶控件都有一個gridview和一些按鈕。爲什麼gridview控件(在用戶控件中)在回發後不保留其屬性值?
我不明白爲什麼用戶控件上的控件不保留它們的值。
編輯
下面是我如何填充用戶控件中的gridview。
protected void Page_Load(object sender, EventArgs e)
{
var list = new List<CKListByDprtment>
{
new CKListByDprtment { ID = 1, TaskName = "New laptop needed",
CompletedBy = "My Boss", HMReq = true },
new CKListByDprtment { ID = 2, TaskName = "New Workstation needed",
CompletedBy = "My Boss", HMReq = false }
};
gvCKList.DataSource = list;
gvCKList.DataBind();
}
#endregion
#region GridView Validation
protected void cvValidateGrid_ServerValidate(object sender, ServerValidateEventArgs args)
{
ValidateGrid();
}
private void ValidateGrid()
{
foreach (GridViewRow gvRow in gvCKList.Rows)
{
CheckBox ckHMreq = gvRow.Cells[0].FindControl("ckHMreq") as CheckBox;
}
}
我試着在main aspx頁面上添加一個複選框。當頁面回傳時,檢查可以保留其價值。我也嘗試過用戶控件,但不是在gridview中。回發時,複選框保留其值。
它看起來像只在GridView中,在回發後控件失去它們的值。我已經添加了ViewStateMode =「Enabled」首先在aspx頁面上,然後在usercontrol和finview上查看gridview本身,但沒有成功。
任何理由?
您是否在代碼隱藏中動態添加用戶控件,或者它們是否存在於aspx頁面中? – 2013-02-08 19:40:54
它們出現在aspx頁面 – Richard77 2013-02-08 19:43:38
您在頁面生命週期的哪個位置填充用戶控件?我想知道如果viewstate _is_恢復,但也許你正在重新填充數據,它會被覆蓋。你有圍繞usercontrol人口代碼的if(!Page.IsPostBack)嗎? – 2013-02-08 19:55:21