DataGridのItemDataBoundを使用して、以下のタスクを実行しています。
- 行に存在するCheckBoxのチェック値を確認します。
- チェックされた値に基づいて、同じ行の3つのテキストボックスのEnabledプロパティを設定します。
ここに私のコードがあります:
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
CheckBox ck = (CheckBox)e.Item.FindControl("chkStatus");
bool isChecked = ck.Checked;
TextBox txt1 = ((TextBox)e.Item.FindControl("txt1"));
TextBox txt2 = ((TextBox)e.Item.FindControl("txt2"));
TextBox txt3 = ((TextBox)e.Item.FindControl("txt3"));
txt1.Enabled = isChecked;
txt2.Enabled = isChecked;
txt3.Enabled = isChecked;
}
ブレークポイントを配置し、有効な値が適切に設定されていることを確認します。たとえば、CheckBoxがチェックされている場合、3つすべてのtextboxes.Enabledプロパティはtrueに設定され、そうでない場合はfalseに設定されます。しかし、一度押すと、CheckBoxがオンになっている行で、3つのテキストボックスがすべて有効になります。しかし、チェックボックスがオフになっている行では、3つのテキストボックスも無効ではなく有効になっています。
これがスクリーンショットです。
誰でも私のコードの何が間違っているのか説明できますか? ItemDataBoundイベントが完了したときに何が起こるか知りたいのですが。値をいじっている他の関数が自動的に呼び出されていますか?ビューステートを有効にしてみました。しかし、まだ役に立たない。
BackGround Colorプロパティを設定します。それは結構です。ただし、Eanbledプロパティはfalseに設定されていません。
前もって感謝します。
この問題は、次のようなテキストボックスの無効な属性を明示的に設定することで修正されました。