C# 防止ItemTemplate内的LinkButton回发,并使用评估值作为参数执行javascript函数
我不知道为什么这会让我这么难受,可能是整天的编码终于让我的头冒烟了。我试图在客户端单击项目模板中的链接按钮时调用js函数。我使用Eval方法将其中一个参数传递给我的js函数并防止回发。但是,它回发并且从不调用我的函数。如果我取被评估的参数,它就会工作C# 防止ItemTemplate内的LinkButton回发,并使用评估值作为参数执行javascript函数,c#,javascript,asp.net,gridview,webforms,C#,Javascript,Asp.net,Gridview,Webforms,我不知道为什么这会让我这么难受,可能是整天的编码终于让我的头冒烟了。我试图在客户端单击项目模板中的链接按钮时调用js函数。我使用Eval方法将其中一个参数传递给我的js函数并防止回发。但是,它回发并且从不调用我的函数。如果我取被评估的参数,它就会工作 <Columns> <asp:BoundField DataField="media_id" Visible="false" HeaderText="" />
<Columns>
<asp:BoundField DataField="media_id" Visible="false" HeaderText="" />
<asp:BoundField DataField="dir_path" Visible="false" HeaderText="" />
<asp:TemplateField HeaderText="Date Taken">
<ItemTemplate>
<asp:LinkButton ID="dateLinkCsBtn" OnClientClick='<%#Eval("dir_path","javascript:return test({0},event);")%>' CommandArgument='<%#Eval("dir_path") %>'
runat="server" Text='<%# Bind("date") %>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="description" Visible="true" HeaderText="Media Type" />
</Columns>
解决方案:更新gridview的datasource数据表,以显示目录路径“\”的双反斜杠,而不是单反斜杠。它像一个符咒一样工作首先,如果不想回发,函数测试应该返回false。CommandArgument属性仅在使用OnCommand事件时使用 我试过了,但它仍然会回发,如果我取出已计算的参数,它就可以正常工作,而不需要回发。您是否可以直接调用test函数而不使用eval,仅用于测试,所以OnClientClick=“javascript:return test('value');”您是否可以看到为该linkbutton生成的html,并检查对测试函数的javascript调用是否没有语法错误。我认为应该以这种方式调用函数OnClientClick='',它的工作方式与OnClientClick=''类似。但是,这会转义“\”并打印C:KBlog\u MediaColorSnapshota4dde1-76fc-4e2e-9100-f12f48427e24.png,而不是字符串操作所需的C:\KBlog\u Media\1\ColorSnapshot\00a4dde1-76fc-4e2e-9100-f12f48427e24.png
<script>
function test(dir_path,event) {
alert(dir_path);
event.preventDefault();
};
</script>
OnClientClick='<%#Eval("dir_path","javascript:return test({0},event);")%>'
OnClientClick='<%#Eval("dir_path","Javascript:return test(\"{0}\",event);")%>'
C:\KBlog_Media\1\ColorSnapshot\00a4dde1-76fc-4e2e-9100-f12f48427e24.png