调用jquery函数后,服务器端函数不会触发

时间:2015-05-28 19:09:19

标签: jquery asp.net

我有一个包含三列或字段的Datalist:

Column1:一些数据

Column2:Linkbutton Update

Column3:div“divCheck”,默认情况下是隐藏。

events_with_gps_avg:
11:06:02, 16, 16
11:14:09, 19, 19

单击linkbutton时,它会调用jquery函数来显示div。

<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="check" style="display: none">Check</div>

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

</asp:DataList>

但是,在调用jquery之后,不会触发此服务器端功能:

<head>
    <script type="text/javascript">
        jQuery(function ($) {
            $('a.lnk_showCheck').click(function (e) {
                e.preventDefault();
                $('div',$(this).closest("td").next()).show();
            });
        });
    </script>
</head>

为什么呢?我应该如何调用此服务器端功能?

修改

我试图从服务器端调用jquery函数ShowCheck,但我不知道如何让它像('a.lnk_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
            ' Put some code here
            ' It doesn't trigger after LinkButton calls jquery function.

        End If

    End Sub

服务器端函数调用jquery函数:

 <script type="text/javascript">
        jQuery(function ($) {

            $('a.lnk_showCheck').click(function (e) {
                //e.preventDefault();
                $('div', $(this).closest("td").next()).show();            

            });

        });
    </script>

    <script type="text/javascript">

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

    </script>

调用ShowCheck jquery函数时出错。
错误:无法获取属性'toLowerCase',因为它未定义。

1 个答案:

答案 0 :(得分:0)

您的RegisterStartupScript参数已关闭。您需要将脚本指定为Javascript。

这是我用来加载的一些代码,然后调用然后卸载一个javascript函数。

var script = string.Format(@"<script language='javascript'>
                                function f(){
                                              {
                                                 {0}(); 
                                                 Sys.Application.remove_load(f);
                                             }}; 
                                 Sys.Application.add_load(f);
                            </script>", function);

Page.ClientScript.RegisterStartupScript(GetType(), function, script, false);

在您的情况下,您可以将变量function替换为"ShowCheck"(不包括字符串中的parens。)

我还应该注意,这是在C#而不是VB。然而,翻译应该很容易。

如果这个混乱太混乱,你只想打电话给你的方法试试:

var script = @"<script language='javascript'> ShowCheck();</script>";

Page.ClientScript.RegisterStartupScript(GetType(), "ShowCheck", script, false);