【问题标题】:No-postback database update with ASP.Net Gridview and jQuery AJAX使用 ASP.Net Gridview 和 jQuery AJAX 进行无回发数据库更新
【发布时间】:2014-09-25 02:56:04
【问题描述】:

我有这个页面,用户需要在网格视图中检查事情。他们不想点击编辑和保存等等。因此,使用来自这里和其他地方的信息,我想出了以下内容。在gridview中,我有这个复选框(如果记录的DataKeyName是UserID,也是表中要更新的行):

<ItemTemplate>
<asp:CheckBox ID="cbIsActive" runat="server" Enabled="true" Checked='<%# Bind("IsActive") %>'  CssClass="cbActive"  data-id='<%# Eval("UserId")%>' />
</ItemTemplate>

在复选框更改时执行的 jQuery 如下所示:

//Called from gridview checkbox control.
$(".cbActive").change(function () {
   var userid = $(this).data("id");
   //checkbox is nested in a span, so we have to dig down a litte.
   var ctrl = $(this).children(":first");
   var isChecked = (document.getElementById(ctrl[0].id).checked);
   $.ajax({
     contentType: 'application/json; charset=utf-8',
     url: 'Services/WebService.asmx/UpdateStatus',
     data: JSON.stringify({ strUserID: userid, strStatus: isChecked }),
     dataType: 'json',
     type: 'POST',
     error: function (err) {
       //blah blah
     },
     success: function (data) {
       //blah blah
     }
   });
 });

一切正常。唯一困扰我的事情(是的,我知道这有点微不足道)是 jQuery 代码中间的 document.getElementById。我似乎找不到更适合 jQuery 的语法。有其他选择吗?

【问题讨论】:

    标签: jquery asp.net ajax json gridview


    【解决方案1】:

    是的。

    使用$("#ELEMENTID"),其中ELEMENTID 是元素的ID。 # 表示它将是一个 ID。有关 jQuery 选择器的更多信息,see documentation。此外,您可以参考this question 使用 jQuery 来查看是否选中了复选框。那里列出了几种方法,您可能会找到自己喜欢的样式。

    顺便说一句,如果您的问题与问题无关,则无需将它们标记为 JSON、AJAX 或 GridView。而且你的标题应该更能描述你的实际问题,而不仅仅是告诉人们你的申请。

    【讨论】:

    • 感谢 Mason,感谢您的回复,并对我的问题的错误标题和错误标记表示歉意。但我仍然坚持原来的问题。当 'ELEMENTID' 是文字时,$("#ELEMENTID") 语法可以正常工作。但是这里 id 名称在 ctrl 变量中,这就是我不得不求助于 document.getElementById(ctrl) 的原因。我不知道如何在 jQuery 选择器中使用变量名。有没有办法做到这一点?我在 jQuery 文档中没有看到它。
    • 这只是一个简单的字符串连接。 $("#"+ctrl)
    • 再次感谢。我尝试了许多变体,但仍然以未定义或错误告终。 document.getElementById(ctrl[0].id).checked 语法似乎是唯一对我有用的东西。
    • 我是这么认为的,但也许我的 .checked 部分有误。这似乎有效: var isChecked = $("#" + ctrl[0].id).prop('checked');非常感谢您的帮助!
    猜你喜欢
    • 2012-10-19
    • 1970-01-01
    • 2021-01-20
    • 2016-08-03
    • 2011-07-10
    • 2011-05-01
    • 2013-07-20
    • 2011-01-12
    • 1970-01-01
    相关资源
    最近更新 更多