代码之家  ›  专栏  ›  技术社区  ›  Keltex

如何在ASP.NET GridView中找到控件的客户端ID?

  •  16
  • Keltex  · 技术社区  · 16 年前

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

    6 回复  |  直到 16 年前
        1
  •  32
  •   Chris Mullins    16 年前

    试试这个:

    <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>
    
        2
  •  2
  •   JBrooks    16 年前

    也许你不想在需要客户ID的地方这样做。看看这篇文章 here

        3
  •  1
  •   Andrew Siemer    16 年前

    改变 <%# 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 在这种背景下工作。

        4
  •  1
  •   Microsoft Developer    12 年前

    您可以按如下方式获取客户端id:

    protected void Gv_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            string strClientID = ((TextBox)e.Row.FindControl("txtName")).ClientID;
        }
    }
    

        5
  •  1
  •   Nathanael Stew Washington    10 年前

    我只是这样做。。。

    var tbl = document.getElementById('<%=GridView.ClientID%>');
    var checkBox = tbl.rows[i].cells[11].getElementsByTagName("input")[0].id;
    

    单元格应始终相同,并呈现到输入中。如果该单元格中有多个输入,则可能必须更改结尾处的数字。这将为您提供输入对象的新clientid/id(复选框或其他)

        6
  •  0
  •   Roto    8 年前

    <asp:DropDownList ID="custReqRegionsDDL" runat="server" onchange='custReqRegionsDDLOnChange(this)'> </asp:DropDownList>

    这是我的javascript

    function custReqRegionsDDLOnChange(myDDL)
        {
            alert('selected text=' + myDDL.options[myDDL.selectedIndex].text);
    

    }

    推荐文章