我有一个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);

}

scroll top