如何在RunTime中在GridView中添加动态文本框?

时间:2012-05-10 05:13:32

标签: c# asp.net vb.net gridview

我想在动态代码中添加像GridBox中的textBox这样的控件。

在我的项目中,我有一个网格,我无法确定有多少行和列。所以我只是给它DataSource。这工作正常。

GridView G = new GridView();
G.DataSourse = dt;
G.DataBind();

现在我想这样做,Gridview所有控件都Textbox控制,以便我可以在该文本框中书写。

TextBox t= new TextBox();
G.Contorls.Add(t);

这将抛出异常......

有人对此有任何想法???

提前致谢..

此致 Amit Vyas

3 个答案:

答案 0 :(得分:2)

为什么不在设计时使用ItemTemplate

   <asp:GridView ID="GrdDynamic" runat="server">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:TextBox runat="server" ID="Name" Text='<%#Eval("Name") %>'></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

修改

以下是dynamically adding template columns

上有趣的CodeProject帖子

答案 1 :(得分:0)

请检查此http://www.devasp.net/net/articles/display/708.html链接并使用以下代码:

 DropDownList ddl = new DropDownList();

        ddl.Visible = true;

        ddl.ID = "ddl1";

        ddl.Items.Add("Item1");

        TableCell cell = new TableCell();      

        gv.Rows[0].Cells.Add(cell);

        gv.Rows[0].Cells[0].Controls.Add(ddl);

答案 2 :(得分:0)

如果您正在寻找一种在现有GridView中动态添加TextBox的方法,那么使用GridView的RowDataBound事件将是最佳解决方案。

在ItemTemplate字段中添加PlaceHolder控件。

 <asp:GridView ID="GrdDynamic" runat="server" OnRowDataBound="GridView_RowDataBound">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:PlaceHolder runat='server' ID="PlaceHolder1"></asp:PlaceHolder>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

public void GridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
    //find placeholder control
    PlaceHolder placeHolder = e.Row.FindControl("PlaceHolder1") as PlaceHolder;

    TextBox TextBox1 = new TextBox();
    placeHolder.Controls.Add(TextBox1);      
}