带有2个参数的String.Format(ID数据库和ClientID)
我想要那个结果,是
<a id="ctl00" onclick="OpenModal(704520,'asdf')">
<img id="crico" src="../online/img_admin/icon_hist.gif" />
</a>
怎么办?
我这样做:
<asp:HyperLink ID="HyperLink4" runat="server"
onclick='<%# String.Format("OpenModal({0},{1})", DataBinder.Eval(Container.DataItem, "intid"), (Image)GridView1.FindControl("img_Historico").ClientID) ) %>' >
<asp:Image ID="img_Historico" runat="server" />
</asp:HyperLink>
所以基本上是:
OpenModal(Id_do_DataBase, 'ClientID of image')
&#39; /&#39;中的服务器错误应用
编译错误
描述:编译服务此请求所需的资源时发生错误。请查看以下特定错误详细信息并相应地修改源代码。
编译器错误消息:CS0030:无法转换类型&#39;字符串&#39;到&#39; System.Web.UI.WebControls.Image&#39;
不使用我的代码,所以我在这里问。
我也尝试过:onclick='<%# String.Format("AbreModal({0},{1})", DataBinder.Eval(Container.DataItem, "intid"), img_Historico.ClientID )
什么都行不通! :(
答案 0 :(得分:2)
你想要
((Image)GridView1.FindControl("img_Historico")).ClientID
此外,如果您的数据绑定表达式如此复杂,那么您应该将其重构为属性或方法:
protected string ImgHistoricoClientID
{
get {return ((Image)GridView1.FindControl("img_Historico")).ClientID;}
}
数据绑定表达式:
onclick='<%# String.Format("OpenModal({0},{1})", DataBinder.Eval(Container.DataItem, "intid"), ImgHistoricoClientID) ) %>' >
事实上,我会使用GridView的ItemDataBound
事件来设置整个事件。
答案 1 :(得分:2)
问题出在这一行:
(Image)GridView1.FindControl("img_Historico").ClientID
ClientID是一个字符串,您将其强制转换为图像。它应该是:
GridView1.FindControl("img_Historico").ClientID
为了使它更清楚,这也可以起作用(有一个非常强硬的演员)
((Image)GridView1.FindControl("img_Historico")).ClientID