1

我对 Javascript(Jquery) 完全陌生,仍然是 ASP.NET 的初学者。我有一个内容页面,它有一个 gridview gvUsers我为事件RowDatabound编写了一个代码,它在每一行的标记中添加了一个“id”。它的行是可点击的,并且可以通过 contentpage 页面中的 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 不是您在后面的代码中看到的,当您在单个页面上使用它时有时是相同的,但是当您将它添加到 master 时会动态更改,现在在您的 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 回答