1

私は Javascript(Jquery) がまったく初めてで、まだ ASP.NET の初心者です。gridview gvUsersを持つ contentpage があります。すべての行のマークアップに「id」を追加するイベントRowDataboundのコードを作成しました。その行はクリック可能であり、コンテンツページのページで JavaScript を介して選択できます。

  <script src="http://code.jquery.com/jquery-1.8.3.js" type="text/javascript"></script>
             <script type="text/javascript">
                 $(function() {

                $('#<%=gvUsers.ClientID%> tr[id]').click(function() {
                    $('#<%=gvUsers.ClientID%> tr[id]').css({ "background-color":  "White", "color": "Black" });
                    $(this).css({ "background-color": "Black", "color": "White" });          
                });

                $('#<%=gvUsers.ClientID%> tr[id]').mouseover(function() {
                    $(this).css({ cursor: "hand", cursor: "pointer" });
                });

            });

                 $(function() {

                var RowID = $('#hdnEmailID').val();
               if (RowID != "0") {
                    $('#<%=gvUsers.ClientID%> tr[id=' + RowID + ']').css({ "background- color": "Black", "color": "White" });
               }

                $('#<%=gvUsers.ClientID%> tr[id]').click(function() {
                    $('#<%=gvUsers.ClientID%> tr[id]').css({ "background-color": "White", "color": "Black" });
                    $(this).css({ "background-color": "Black", "color": "White" });
                    $('#hdnEmailID').val($(this).attr("id"));
                });

                $('#<%=gvUsers.ClientID%> tr[id]').mouseover(function() {
                    $(this).css({ cursor: "hand", cursor: "pointer" });
                });

                });

            </script>

これらのスクリプトでは、選択した行の「id」プロパティを取得し、hdnEmailIDに保存します ...

<INPUT id="hdnEmailID" type="hidden" value="0" runat="server" >

ページに表示される値hdnEmailIDを作成するために、このようなコードを持つボタン クリック イベント内にコードを作成しました。

Response.write(hdnEmailID.value);

最初は問題なく動作し、クリックした行の「id」が表示されますが、マスターコンテンツページでこのコードを使用した後、スクリプトは0を返します。そして、ボタンをクリックすると..マスターページがリロードされ、スクリプトもリロードされているように見えるため、デフォルトの0が返されます。 私はASP.NETの初心者なので、これが本当に起こったのかわかりません:)

4

1 に答える 1

2

レンダリングされたIDを使用していないため、エラーは次のコードにあります:

  var RowID = $('#hdnEmailID').val();

  $('#hdnEmailID').val($(this).attr("id"));

それは

  var RowID = $('#<%=hdnEmailID.ClientID%>').val();

  $('#<%=hdnEmailID.ClientID%>').val($(this).attr("id"));

コントロールによってレンダリングされる id は、コード ビハインドで表示されるものではありません。単一のページで使用する場合は同じですが、マスターに追加すると、HTML でレンダリングされたコードで動的に変更されます。その動的 ID をレンダリングする必要があります。

asp.net ver 4 には、コントロールにパラメーターがあり、それを使用してそれらを静的にし、変更しないようにすることができますClientIDMode ="Static"

同様:
ASP.NET が ID をマングルする場合、JavaScript から DIV にアクセスするにはどうすればよいですか?
ASP.NET で ID ではなくコントロール クライアント名にアクセスする
外部 JavaScript ファイルからユーザー コントロールの clientid を取得
する JavaScript で asp.net コントロールを見つけて変更する方法は?

于 2012-12-12T06:37:09.633 に答える