我要在<ItemTemplate></ItemTemplate>中给一个<TD>加onclick事件,引发一个javascript,该javascript方法接受一个参数,我然后在ASPX页面用用这样的代码:
<td align="center" ondblclick='rowClicked("<%#DataBinder.Eval(Container.DataItem,MemberLoginName)%>")'>测试</td>
结果运行后的HTML就成这样了:
ondblclick="rowClicked("<%#DataBinder.Eval(Container.DataItem,"MemberLoginName")%>")"这种方式到底能不能行得通啊?如果行的话,我的标点怎么改都不行..麻烦帮忙看一下吧,测试一下!谢谢
<td align="center" ondblclick='rowClicked("<%#DataBinder.Eval(Container.DataItem,MemberLoginName)%>")'>测试</td>
结果运行后的HTML就成这样了:
ondblclick="rowClicked("<%#DataBinder.Eval(Container.DataItem,"MemberLoginName")%>")"这种方式到底能不能行得通啊?如果行的话,我的标点怎么改都不行..麻烦帮忙看一下吧,测试一下!谢谢
<td align="center" ondblclick='rowClicked(<%#DataBinder.Eval(Container.DataItem,MemberLoginName)%>)'>测试</td>
按你说的.生成的HTML中,成了这样.绑定表达式没有解析.
<td align="center" ondblclick="rowClicked(<%#DataBinder.Eval(Container.DataItem,MemberLoginName)%>)">
我从本地试了,可以啊!!
什么错误提示?楼主的rowClicked有问题?
运行后查看HTML查看MemberLoginName是否读出来了?(数据库中要有值)
按你写的.运行后的HTML为
<td align="center" ondblclick=""rowClicked('<%#DataBinder.Eval(Container.DataItem,"MemberLoginName")%">')">
<td align="center" ondblclick=""rowClicked('<%#DataBinder.Eval(Container.DataItem,"MemberLoginName")%">')">
我提出的东东在本地试过的.OK
你使用的是datagrid/datalist?,请把前台的HTML贴出来.后台最好也贴出来.
问题在别的地方,而不在这里......
设置ID了吗?要设置ID的.
<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就不能正确解析了,看来只能舍弃一样了...
不知道还有没有解决办法.
您说的我也曾试过,但是如果TR RUNAT=SERVER的话,我在.CS中用xxx.attrbutes.add(......)
然后浏览页面,发现生成的HTML代码还是会转成=""等东东.
<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;
}
搂主试试.
<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页面却是双引好,楼主可以简单地试.一定可以的.
<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("sSSSS")"
单也不妨碍其执行,奇怪~~~~
可我需要调用的是一个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"去掉就可以正常运行,加上则不可以,你可以试试看
<tr>
<td onclick="showAlert('<%# DataBinder.Eval(Container.DataItem,"Text") %>');">
测试单元格
</td>
</tr>
</ItemTemplate>改成这样就OK了.上面那个忘了改标点
我上面的DataGird和Repeater里面的例子了不是都有 runat="server"
测试通过了,你咋还......
郁闷........