4

私は次のコードを動作させようとしています。

 <asp:DataGrid ID="Grid" runat="server"  DataKeyField="KeyID" CssClass="grid"
...
<asp:CheckBox runat="server"  ID="checkBox-<%#DataBinder.Eval(Container.DataItem,"KeyID")%>" AutoPostBack="false"></asp:CheckBox>

コードを実行すると、次のエラーが発生します。

Error   25  The server tag is not well formed.

注:これはrunat="server"なしで機能します。この問題の解決策は何ですか?

4

1 に答える 1

5

やりたいことをするためにチェックボックスのIDを設定する必要はありません(背景色を変更します)。チェックボックスは次のようになります(表示する場合はテキスト値として追加しましたKeyID...またはチェックボックスのみが必要な場合は削除できます):

<asp:CheckBox runat="server" ID="checkbox" Text='<%# Eval("KeyID") %>' AutoPostBack="false"></asp:CheckBox>  

これで、チェックボックスは次のようにレンダリングされます。

<input id="MainContent_Grid_checkbox_0" type="checkbox" name="ctl00$MainContent$Grid$ctl02$checkbox" /><label for="MainContent_Grid_checkbox_0">Value of KeyID</label> 

すべての名前が「checkbox」で終わるため、名前が「checkbox」で終わる要素の変更イベントに関数を適用できます。これがJavaScriptの質問であるか、jQueryを使用している場合は指定しませんでした...この回答はjQueryを使用しています:

<script>
    $('input[name$="checkbox"]').change(function () {
        if ($(this).is(':checked')) {
            $(this).parent().css('background-color', 'yellow');
        }
        else {
            $(this).parent().css('background-color', 'white');
        }
    });
</script> 

これにより、チェックボックスがオンになっているかどうかが決まり、チェックボックスが<td>オンになっている場合は、値に応じて、親(DataGridでレンダリングされたHTML内にある親)の背景色が設定されます。

同様に、次の行に移動して、parent()行全体を強調表示できます。

リソース: jQueryセレクター

OnCheckedChanged -JavaScriptではなくコードビハインドで処理するイベント。

于 2013-02-21T03:34:54.520 に答える