我有一个包含三列或字段的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',因为它未定义。
答案 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);