我想在动态代码中添加像GridBox中的textBox这样的控件。
在我的项目中,我有一个网格,我无法确定有多少行和列。所以我只是给它DataSource。这工作正常。
GridView G = new GridView();
G.DataSourse = dt;
G.DataBind();
现在我想这样做,Gridview
所有控件都Textbox
控制,以便我可以在该文本框中书写。
TextBox t= new TextBox();
G.Contorls.Add(t);
这将抛出异常......
有人对此有任何想法???
提前致谢..
此致 Amit Vyas
答案 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>
修改强>
上有趣的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);
}