0

同じタイプのユーザー コントロールが 5 つあるページがあります。各ユーザー コントロールには、グリッドビューといくつかのボタンがあります。

ユーザー コントロールのコントロールが値を保持しない理由がわかりません。

編集

以下は、ユーザー コントロール内にグリッドビューを設定する方法です。

    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ページにチェックボックスを追加しようとしました。ページがポストバックされたとき、checked はその値を保持できました。ユーザーコントロールでも試しましたが、グリッドビュー内では試しませんでした。ポストバック時に、チェックボックスの値が保持されました。

ポストバック後にコントロールが値を失うグリッドビュー内のみのように見えます。ViewStateMode = "Enabled"を最初に aspx ページに追加し、次に usercontrol に追加し、最後に gridview 自体に追加しましたが、成功しませんでした。

何らかの理由?

4

1 に答える 1

1

PostBackあなたが呼んでいるすべてのことについて私には思えますDataBind()DataBind()if Page.IsPostBackequalsのみを呼び出す必要がありfalseます。

于 2013-02-08T21:09:01.883 に答える