如何在 ASP.NET GridView 中查找控件的客户端 ID?
我有一个 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”
有人知道如何获取此文本框的客户端 ID 吗?
I have a asp:GridView which contains a asp:TextBox within a TemplateField. I would like to obtain it's ID for use in javascript. Something like this:
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox ID="textDateSent" runat="server" />
<input type="button" value='Today'
onclick="setToday('<%# textDateSent.ClientID %>');" />
</ItemTemplate>
</asp:TemplateField>
But when I compile, I get an error:
The name 'textDateSent' does not exist in the current context
Anybody know how to get the client ID of this TextBox?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
您可以像这样获取客户端 ID:
这将为所有行中的每个文本框提供唯一的客户端 ID。
You can get client id like this:
This will give unique client ID for each textbox in all rows.
我只是这样做......
单元格应该始终相同,并且它会被渲染到输入中。 如果该单元格中有多个输入,您可能必须更改末尾的数字。 这将为您提供输入对象的新 clientid/id(复选框或其他内容)
I just do this...
the cell should always be the same and it gets rendered into an input. You may have to change the number at the end if you have more then one input in that cell. This will give you the new clientid/id of the input object (checkbox or whatever)
这就是我所做的。 在 aspx 页面中,我只是将整个对象传递给了 javascript 函数,所以我什至不需要客户端 ID。 就我而言,该对象是 GridView 的 EditItemTemplate 中的下拉列表。 我在 aspx 代码中添加了一个 html onchange(this) 事件。
这是我的 javascript
}
This is what I did. In the aspx page I just passed the entire object to the javascript function, so I didn't even meed to client id. In my case the object was a drop down list in the EditItemTemplate of the GridView. I added an html onchange(this) event in the aspx code.
<asp:DropDownList ID="custReqRegionsDDL" runat="server" onchange='custReqRegionsDDLOnChange(this)'>
</asp:DropDownList>
here is my javascript
}
尝试这个:
Try this:
也许您不想在需要 ClientID 的地方执行此操作。 查看这篇文章 此处以通用方式引用行中的控件。
Maybe you don't want to do it where you need the ClientID. Check out this post here where the controls in a row are referenced in a generic way.
将
<%# textDateSent.ClientID %>
更改为<%= textDateSent.ClientID %>
。呃,您可能需要使用网格视图的 OnDataBinding 事件。 然后在你的 javascript 中放入一个文字控件。 然后您可以获得文本框的 clientID 并将其输入到文字控件中。
在这里查看非常详细的教程 在此背景下开展工作。
Change
<%# textDateSent.ClientID %>
to<%= textDateSent.ClientID %>
.Argh, you may need to use the OnDataBinding event of the grid view. Then put a literal control in your javascript. Then you can get the clientID of the text box and feed that into your literal control.
Look here for a great detailed tutorial on working within this context.