具有2个参数和ClientID的String.Format

时间:2014-03-12 21:58:33

标签: c# asp.net

带有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 )

什么都行不通! :(

2 个答案:

答案 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