同じタイプのユーザー コントロールが 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 自体に追加しましたが、成功しませんでした。
何らかの理由?