-1

CheckBox ID のリストに基づいて、複数のチェックボックスをチェック済みに設定しようとしています。次に例を示します。

<asp:CheckBox ID="TS_Deviation" runat="server" />

コードビハインド

int i = clist.Count -1;
do
{
    clist[i].Checked = true;
    i--;
} while (clist != null && i >= 0);

このリストには、チェック済みに設定する CheckBox ID が含まれています。たとえば、プレーンテキストclist[0]に含まれます。"TS_Deviation"リストを介して値を設定しようとしている理由は、リストが に設定する必要があるすべてのチェックボックスの ID をプルする linq クエリから来ているためchecked = trueです。私の問題は、 clist[i] をチェックボックス ID として使用してチェック済みに設定する方法がわからないことです。

4

3 に答える 3

1

リストに「プレーンテキスト」の ID が含まれている場合、ID 文字列を意味していると思いますか?

Control.FindControl( ... )その場合は、ID に基づいて実際のチェックボックスを取得するために呼び出す必要があります。これは再帰関数ではないため、直接の子コントロールのみを検索することに注意してください。チェックボックスがコンテナ内にある場合、つまり:

<asp:Panel ID="CheckboxContainer" runat="server"> .... checkboxes .... </asp:Panel>

次に、次のように呼び出します。

var check = CheckboxContainer.FindControl( clist[i] ) as CheckBox;

チェックボックスを取得します。CheckBoxIf はコントロールを返すため、プロパティを呼び出す前にキャストする必要があり.Checkedます。

于 2013-08-19T14:21:31.447 に答える
0

linq クエリで実際の Checkbox オブジェクトを選択し、そのプロパティを設定できますか?

そうでない場合は、所有している ID を使用してページ上のコントロールを見つけることができます。

Page.FindControl(clist[i]);
于 2013-08-19T14:21:11.577 に答える
-1

Find Control メソッドを見てみましょう

int i = clist.Count -1;
do
{    
    CheckBox cb= (CheckBox)Page.FindControl.Find(clist[0], true);     
    cb.Checked = true;
    i--;
} while (clist != null && i >= 0);

編集:申し訳ありませんが、ウェブフォーム用に修正しました。

于 2013-08-19T14:21:46.357 に答える