用于在行表中获取div的jquery函数

时间:2015-05-28 21:02:19

标签: jquery asp.net

我有一个包含三列或字段的Datalist: 第1栏:一些数据 第2列:链接按钮更新 第3栏:div" divCheck",默认情况下隐藏。

<asp:DataList ID="MyDataList" runat="server" EnableViewState="True">
      <HeaderTemplate>
      </HeaderTemplate>
      <ItemTemplate>
          <table width="100%">
              <tr id="ItemRow" runat="server">
                  <td >
                      <%# DataBinder.Eval(Container.DataItem, "some_data")%>
                  </td>
                  <td >
                      <asp:LinkButton Text="Update" class="lnk_showCheck" CommandName="update" Runat="server" ID="update"   />
                  </td>
                  <td >
                      <div id="divCheck" style="display: none">Check</div>

                  </td>
              </tr>
          </table>
      </ItemTemplate>

</asp:DataList>

这个想法是,当点击任何一行的linkbutton时,它必须触发服务器端函数并调用jquery函数ShowCheck。

Protected Sub MyDataList_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataListCommandEventArgs) Handles MyDataList.ItemCommand

        If e.CommandName = "update" Then
            Dim script As String = "<script language='javascript'> ShowCheck();</script>"
            Page.ClientScript.RegisterStartupScript(Me.[GetType](), "ShowCheck", script, False)

        End If

    End Sub

Jquery ShowCheck()必须在该行中显示divCheck。

<script type="text/javascript">

        function ShowCheck() {

            //alert($(this).get(0).tagName);
            $('div', $(this).closest("td").next()).show();
            };

    </script>

问题是$(this)作为未定义的对象传递。它应该作为DataList中的LinkBut​​ton对象传递。

这可能吗?当从服务器端函数触发时,jquery如何在Table行中找到divCheck?

2 个答案:

答案 0 :(得分:1)

你可以试试下面的代码吧......

Protected Sub MyDataList_ItemCommand(source As Object, e As DataListCommandEventArgs)
    If e.CommandName = "update" Then
        Dim linkButton As LinkButton = TryCast(e.CommandSource, LinkButton)
        Page.ClientScript.RegisterStartupScript(Me.[GetType](), "Shows", "ShowCheck(" + linkButton.ClientID + ");", True)
    End If
End Sub

脚本代码

function ShowCheck(controlid) {
            $('div', $(controlid).closest("td").next()).show();
        }

答案 1 :(得分:0)

您可以在div中添加runat attribute

<div id="check" runat="server" style="display: none">Check</div>

然后在两个函数中替换此行

$('div', $(this).closest("td").next()).show(); 

这个

$('#<%=check.ClientID %>').show();