无法将eval传递给javascript函数

时间:2014-02-14 10:06:36

标签: c# javascript asp.net .net visual-studio-2008

我在gridview中有以下图像按钮:

<asp:TemplateField HeaderText="Edit" ControlStyle-CssClass="smallTxt"
                                HeaderStyle-CssClass="smallTxt">
                                <ItemTemplate>

                                <asp:ImageButton runat="server" ImageUrl="../images/yellow_arrow.gif" ID="imgbtnsearch"
                     OnClientClick="javascript:setCustID('<% Eval(idCustomer)%>');return false;" />


                                </ItemTemplate>
                                <HeaderStyle HorizontalAlign="Left" />
                            </asp:TemplateField>

通过这个图像按钮,我调用了一个Javascript函数。请参阅下面的代码。

 function setCustID(cid) {
        alert(cid);
        ShowHideControl('ctl04_divEdit');
        document.getElementById('ctl04_hdnIdCustomer').value = cid;


    }

当我运行此操作时,我得到的是Eval(idCustomer)结果数字(在javascript的警告框中),而不是:

<% Eval(idCustomer).toString()%>

当我将#传递给参数时:#&lt;%#Eval(idCustomer)%&gt;

OnClientClick="javascript:setCustID('<%#Eval(idCustomer)%>');return false;" 

功能提醒:

<%#Eval(idCustomer)%>

2 个答案:

答案 0 :(得分:2)

#的举动是正确的。除了不引用迷失(就像我在编辑之前所做的那样),调用string.Format来处理js表达式:

OnClientClicking='<%# string.Format("javascript:setCustID({0});return false;", Eval("idCustomer")) %>'

如果这是一个字符串,还要确保用单引号包装函数参数。如果这是一个整数,请保持原样。

答案 1 :(得分:1)

对不起,因为我在ASP方面不是很好, 但是对于Eval:我认为它不应该以字符串形式传递:“Eval(string)”而是你可以使用Eval(“string”)。