Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 防止ItemTemplate内的LinkButton回发,并使用评估值作为参数执行javascript函数_C#_Javascript_Asp.net_Gridview_Webforms - Fatal编程技术网

C# 防止ItemTemplate内的LinkButton回发,并使用评估值作为参数执行javascript函数

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="" />

我不知道为什么这会让我这么难受,可能是整天的编码终于让我的头冒烟了。我试图在客户端单击项目模板中的链接按钮时调用js函数。我使用Eval方法将其中一个参数传递给我的js函数并防止回发。但是,它回发并且从不调用我的函数。如果我取被评估的参数,它就会工作

        <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