我要在<ItemTemplate></ItemTemplate>中给一个<TD>加onclick事件,引发一个javascript,该javascript方法接受一个参数,我然后在ASPX页面用用这样的代码:
<td align="center" ondblclick='rowClicked("<%#DataBinder.Eval(Container.DataItem,MemberLoginName)%>")'>测试</td>
结果运行后的HTML就成这样了:
ondblclick="rowClicked(&quot;<%#DataBinder.Eval(Container.DataItem,&quot;MemberLoginName&quot;)%>&quot;)"这种方式到底能不能行得通啊?如果行的话,我的标点怎么改都不行..麻烦帮忙看一下吧,测试一下!谢谢

解决方案 »

  1.   

    <%#DataBinder.Eval(Container.DataItem,"MemberLoginName")%>
      

  2.   

    去掉双引号
    <td align="center" ondblclick='rowClicked(<%#DataBinder.Eval(Container.DataItem,MemberLoginName)%>)'>测试</td>
      

  3.   

    TO:gaochao79(http://media.megajoy.com) 
    按你说的.生成的HTML中,成了这样.绑定表达式没有解析.
    <td align="center" ondblclick="rowClicked(<%#DataBinder.Eval(Container.DataItem,MemberLoginName)%>)">
      

  4.   

    <td align="center" ondblclick="rowClicked('<%#DataBinder.Eval(Container.DataItem,"MemberLoginName")%>')">测试</td>
      

  5.   

    adandelion(猪头) 的也不行
    我从本地试了,可以啊!!
    什么错误提示?楼主的rowClicked有问题?
    运行后查看HTML查看MemberLoginName是否读出来了?(数据库中要有值)
      

  6.   

    <td align="center" ondblclick='<%#DataBinder.Eval(Container.DataItem,"MemberLoginName","rowClicked(\"{0}\")")%>")'>测试</td>
      

  7.   

    TO:adandelion(猪头) 
    按你写的.运行后的HTML为
    <td align="center" ondblclick="&quot;rowClicked('<%#DataBinder.Eval(Container.DataItem,&quot;MemberLoginName&quot;)%">')">
      

  8.   

    asthlon(像龙卷风一样的男子) 的结果为:
    <td align="center" ondblclick="&quot;rowClicked('<%#DataBinder.Eval(Container.DataItem,&quot;MemberLoginName&quot;)%">')">
      

  9.   

    楼主,给出程序吧.
    我提出的东东在本地试过的.OK
    你使用的是datagrid/datalist?,请把前台的HTML贴出来.后台最好也贴出来.
    问题在别的地方,而不在这里......
      

  10.   

    我发现问题在哪了..如果TD所在的TR是RUNAT=SERVER的就不正常,如果所在的TR没有RUNAT=SERVER就没问题了..我可我这个TR必须得RUNAT=SERVER,可问题又怎么解决呢?
      

  11.   

    <tr id="...".....>
    设置ID了吗?要设置ID的.
      

  12.   

    <ItemTemplate>
    <tr class="box_dataguide_value_tr" runat=server id="rowid">
    <td align="center" onclick="rowClicked('<%#DataBinder.Eval(Container.DataItem,"MemberLoginName")%>')"><asp:Literal ID="litmembername" Runat="server" /></td>
    </tr>
    </ItemTemplate>
    这样的代码了,因为我叫TR runat=server 是为了在后台动态改变它的背景色..
    可是TR runat=server 以后. <TD>中的CLICK就不能正确解析了,看来只能舍弃一样了...
    不知道还有没有解决办法.
      

  13.   

    是不是可以偿试在代码隐藏文件中,即cs文件中写这个JS脚本,而不要直接在设计页中用数据绑定表达式。这样JS脚本可以做为文本直接发送到设计页中,而要绑定的数据可以做为变量传送。
      

  14.   

    TO:yushulingfeng(跑不快) 
    您说的我也曾试过,但是如果TR RUNAT=SERVER的话,我在.CS中用xxx.attrbutes.add(......)
    然后浏览页面,发现生成的HTML代码还是会转成="&quot等东东.
      

  15.   

    <ItemTemplate>
    <tr class="box_dataguide_value_tr" runat=server id="rowid">
    <td align="center" onclick='<%# MakeEvent(DataBinder.Eval(Container.DataItem,"MemberLoginName"))%>'>
    <asp:Literal ID="litmembername" Runat="server" /></td>
    </tr>
    </ItemTemplate>
    aspx.cs中加入:
    protected string MakeEvent(object obj)
    {
    string str = "rowClicked(\"";
    str += obj.ToString();
    str += "\");"
    return str;
    }
    搂主试试.
      

  16.   

    <asp:TemplateColumn HeaderText="标题">
    <ItemTemplate>
    <table><tr runat="server" id ="trid" ><td onclick ='<% # MakeTest(DataBinder.Eval(Container.DataItem,"subject"))%>'>
    <asp:HyperLink ID ="HlkEdit" Runat ="server" NavigateUrl='<% # MakeUrl(DataBinder.Eval(Container.DataItem,"id"))%>' Text ='<% # DataBinder.Eval(Container.DataItem,"subject")%>'>
    </asp:HyperLink></td></tr></table>
    </ItemTemplate>
    </asp:TemplateColumn>
    ----------------------------------------------------

    protected string MakeTest (object obj)
    {
    string Url = "rowClicked('"+obj.ToString()+"')";
    return Url;
    }--------------------------------------------------
    楼主我在tr里也加入了如runat =server,DataGrid中试过了,没有问题的.Repeater一定也可以的.
    <td onclick ='<% # MakeTest(DataBinder.Eval(Container.DataItem,"subject"))%>'>
    onclick =后面的单引号,在做程序的时候是单引号,而实际输出的HTML页面却是双引好,楼主可以简单地试.一定可以的.
      

  17.   

    <ItemTemplate>
    <tr class="box_dataguide_value_tr" runat="server" id="rowid">
    <td align="center" onclick ='<% # MakeTest(DataBinder.Eval(Container.DataItem,"subject"))%>'><asp:Literal ID="litmembername" Runat="server" />aaaaaa</td>
    </tr>
    </ItemTemplate>
    楼主,repeater也试过了,OK,通过!!
    onclick ='<% # MakeTest(DataBinder.Eval(Container.DataItem,"subject"))%>'
    onclick ='.....'后的单引号,在HTML中也变成双引号了,着是它本身的特性吧,所以onclik 里面的参数若为字符串,应该使用单引号,而非双引号了.
    ----------------------------------------------
    我又试了即使参数使用了双引号,HTML代码为onclick="rowClicked(&quot;sSSSS&quot;)"
    单也不妨碍其执行,奇怪~~~~
      

  18.   

    谢谢楼上的,你那个是调用C#的一个方法
    可我需要调用的是一个javascript.如果TR没有RUNAT= SERVER,就没问题,反之就不行.<script language=javascript>
    function showAlert(obj)
    {
     alert(obj);
    }
    </script>
    <ItemTemplate>
    <tr runat=server id="rowa">
    <td onclick='showAlert(<%# DataBinder.Eval(Container.DataItem,"Text") %>)'>
    测试单元格
    </td>
    </tr>
    </ItemTemplate>上面的代码把TR的runat=server id="rowa"去掉就可以正常运行,加上则不可以,你可以试试看
      

  19.   

    <ItemTemplate>
    <tr>
    <td onclick="showAlert('<%# DataBinder.Eval(Container.DataItem,"Text") %>');">
    测试单元格
    </td>
    </tr>
    </ItemTemplate>改成这样就OK了.上面那个忘了改标点
      

  20.   

    搂主真粗心!
    我上面的DataGird和Repeater里面的例子了不是都有 runat="server" 
    测试通过了,你咋还......
    郁闷........