如何在Gridview内的表格单元格中找到对文本框的控制

Posted

技术标签:

【中文标题】如何在Gridview内的表格单元格中找到对文本框的控制【英文标题】:htHow to find control of Textbox in table cell which is inside Gridview 【发布时间】:2016-08-06 08:29:28 【问题描述】:

我有一个gridview,我的记录很少,我在gridview 的顶部有一个表格单元格,带有一个文本框和一个用于过滤记录的按钮。如何找到该文本框的控件。

protected void GridView2_RowCreated(object sender, GridViewRowEventArgs e)
    
        if (e.Row.RowType == DataControlRowType.Header)
        
            GridViewRow HeaderGridRow = new GridViewRow(0, 1, DataControlRowType.Header, DataControlRowState.Normal);
            TableCell HeaderCell = new TableCell();

            HeaderCell.Text = "";
            TextBox abc = new TextBox();
            HeaderCell.Controls.Add(abc);
            HeaderCell.ColumnSpan = 3;
            HeaderGridRow.Cells.Add(HeaderCell);

            HeaderCell = new TableCell();
            HeaderCell.Text = "";
            TextBox search = new TextBox();
            search.ID = "search1";
            HeaderCell.Controls.Add(search);
            HeaderCell.ColumnSpan = 3;
            HeaderGridRow.Cells.Add(HeaderCell);
            Control ctrl = HeaderGridRow.Cells[1].Controls[0];
            TextBox tc = ctrl as TextBox;


            HeaderCell = new TableCell();

            Button btn_chk = new Button();
            btn_chk.Text = "go";
            HeaderCell.Controls.Add(btn_chk);
            HeaderCell.ColumnSpan = 1;
            btn_chk.Click += new EventHandler(btnClick);
            HeaderGridRow.Cells.Add(HeaderCell);

            //btn_chk.CommandName = "btn_chk";

            GridView2.Controls[0].Controls.AddAt(0, HeaderGridRow);


        
    

        html part

         <asp:GridView ID="GridView2" runat="server"            OnRowCreated="GridView2_RowCreated">   
                    <Columns>
                        <asp:TemplateField>

     <%--   <HeaderTemplate>
     Planning Id<br />
        <asp:TextBox ID="txt_planningid" runat="server"></asp:TextBox>
    </HeaderTemplate>--%>                     
                            <HeaderTemplate>
                                <asp:Label ID="Label9" runat="server" Text="S.No"></asp:Label>
                            </HeaderTemplate>

                            <ItemTemplate>
                                <asp:Label ID="Label8" runat="server" Text="<%#Container.DataItemIndex+1 %> "></asp:Label>
                            </ItemTemplate>

                        </asp:TemplateField>

                    </Columns>

                </asp:GridView>

我在 rowcreated 事件中使用表格单元格添加了两个文本框和一个按钮..

【问题讨论】:

你看过这个***.com/questions/1965835/… 是的,我已经检查过了。gridview.rows[] 返回记录的行数。我想要控制 gridview 标题部分上方的文本框。我想使用该文本框来过滤记录在网格视图中。 你能发布你的 HTML 是的,我已经更新了.. 【参考方案1】:

我想这就是你所追求的,

向您的 Gridview 添加 RowDataBound 事件

OnRowDataBound="GridView2_RowDataBound"

使用 RowDataBound 事件处理事件并找到文本框:

protected void GridView2_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)


    if (e.Row.RowType == DataControlRowType.Header)
    
        // Find the textbox
        TextBox abc = (TextBox)e.Row.FindControl("abc");

    

【讨论】:

实际上在 gridview GridView2 行创建事件中,我动态创建了另一个 gridview 'headergridrow',其中有一个文本框。我需要找到该文本框的控件。

以上是关于如何在Gridview内的表格单元格中找到对文本框的控制的主要内容,如果未能解决你的问题,请参考以下文章

如何在 GridView 的 FooterTemplate 单元格中对齐文本

如何在表格单元格中放置文本框

html表格内的自动滚动文本

表格单元格中的文本居中

从表格视图单元格中删除 UIlabel 文本

Gridview 编辑值