为什么gridview(在用户控件内部)内的控件在回发后不会保留其属性的值?

时间:2013-02-08 19:31:38

标签: asp.net user-controls

我有一个页面有5个相同类型的用户控件。每个用户控件都有一个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;
        }
    }

我尝试在主aspx页面上添加一个复选框。当页面回发时,已检查的内容能够保留其值。我也尝试过用户控件但不在gridview内部。当回发时,复选框保留其值。

看起来只有在gridview内部,控件在回发后会丢失其值。我首先在aspx页面上添加了 ViewStateMode =“Enabled”,然后在gridview上添加了,最后添加了gridview本身,但没有成功。

任何原因?

1 个答案:

答案 0 :(得分:1)

在我看来,对于你PostBack的每个DataBind()来说。如果DataBind()等于Page.IsPostBack,则只能致电false