我有一个asp:GridView,它在TemplateField中包含一个asp:TextBox。我想获取它的ID,以便在javascript中使用。如下所示:
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox ID="textDateSent" runat="server" />
<input type="button" value='Today'
onclick="setToday('<%# textDateSent.ClientID %>');" />
</ItemTemplate>
</asp:TemplateField>
但是当我编译时,我得到一个错误:
名称'textDateSent‘在当前上下文中不存在
有人知道怎么获取这个TextBox的客户端ID吗?
发布于 2009-07-15 02:13:01
试试这个:
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox ID="textDateSent" runat="server">
</asp:TextBox>
<input type="button" value='Today' onclick="setToday('<%# ((GridViewRow)Container).FindControl("textDateSent").ClientID %>');" />
</ItemTemplate>
</asp:TemplateField>
发布于 2009-07-15 03:27:50
也许您不想在需要ClientID的地方执行此操作。看看这篇文章的here,其中一行中的控件以通用的方式被引用。
发布于 2009-07-15 00:12:53
将<%# textDateSent.ClientID %>
更改为<%= textDateSent.ClientID %>
。
啊,您可能需要使用网格视图的OnDataBinding事件。然后在你的javascript中放一个文字控件。然后,您可以获取文本框的clientID并将其提供给您的文本控件。
protected void GridViewName_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//Create an instance of the datarow
DataRowView rowData = (DataRowView)e.Row.DataItem;
//locate your text box
//locate your literal control
//insert the clientID of the textbox into the literal control
}
}
在这里查找在此上下文中工作的great detailed tutorial。
https://stackoverflow.com/questions/1128746
复制相似问题