如何找到控制的ASP.NET GridView控件中的客户端ID?
-
13-09-2019 - |
题
我有一个ASP:GridView的含有ASP:文本框一个TemplateField内。我想获得它是在JavaScript中使用的ID。是这样的:
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox ID="textDateSent" runat="server" />
<input type="button" value='Today'
onclick="setToday('<%# textDateSent.ClientID %>');" />
</ItemTemplate>
</asp:TemplateField>
但是,当我编译,我得到一个错误:
名称“textDateSent”不在当前上下文中存在
有人知道如何得到这个文本框的客户端ID?
解决方案
尝试这种情况:
<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>
其他提示
也许你不想在你需要的客户端ID来做到这一点。看看这个帖子的此处其中行中的控件的一般方法被引用。
更改<%# 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
}
}
在这里寻找href="http://weblogs.asp.net/meligy/archive/2008/01/25/gridview-databinding-events.aspx" rel="nofollow noreferrer">伟大的详细教程的在此范围内的工作。
您可以获取客户端ID是这样的:
protected void Gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string strClientID = ((TextBox)e.Row.FindControl("txtName")).ClientID;
}
}
这会给唯一客户端ID为在所有的行的每个文本框。
我只是这样做...
var tbl = document.getElementById('<%=GridView.ClientID%>');
var checkBox = tbl.rows[i].cells[11].getElementsByTagName("input")[0].id;
细胞应始终是相同的,并且它被渲染到的输入。您可能需要在最后,如果你有在该单元格多于一个输入更改号码。这将使您输入对象的新的clientid / ID(复选框或其他)
这就是我所做的。在aspx页面我只是通过整个对象的JavaScript函数,所以我甚至没有酬劳给客户端ID。在我的情况下,对象是一个下拉列表,在GridView的EditItemTemplate里。我添加一个html平变化(本)事件在ASPX代码。
<asp:DropDownList ID="custReqRegionsDDL" runat="server" onchange='custReqRegionsDDLOnChange(this)'>
</asp:DropDownList>
这里是我的javascript
function custReqRegionsDDLOnChange(myDDL)
{
alert('selected text=' + myDDL.options[myDDL.selectedIndex].text);
}