【发布时间】:2011-07-03 13:01:53
【问题描述】:
我有两列,如何动态添加一个或两个控件...每次创建一行时..
我也想动态创建列..通过迭代。
我如何做到这一点?
【问题讨论】:
-
你是什么意思:- 我也想动态创建列..通过迭代。?
我有两列,如何动态添加一个或两个控件...每次创建一行时..
我也想动态创建列..通过迭代。
我如何做到这一点?
【问题讨论】:
在要添加控件的列中放置一个PlaceHolder 控件。然后在 GridView 的RowDataBound 事件中将控件添加到 PlaceHolder
编辑 1
您在 aspx 中的网格列将如下所示:-
<Columns>
<asp:TemplateField HeaderText="Column1">
<ItemTemplate>
<asp:PlaceHolder runat='server' ID="column1PlaceHolder"></asp:PlaceHolder>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Column2">
<ItemTemplate>
<asp:PlaceHolder runat='server' ID="column2PlaceHolder"></asp:PlaceHolder>
</ItemTemplate>
</asp:TemplateField>
</Columns>
您的 RowDataBound 事件将如下所示:-
public void GridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if (column1NeedsControls)
{
PlaceHolder placeHolder = e.Row.FindControl("column1PlaceHolder") as PlaceHolder;
TextBox TextBox1 = new TextBox();
placeHolder.Controls.Add(TextBox1);
}
if (column2NeedsControls)
{
PlaceHolder placeHolder = e.Row.FindControl("column2PlaceHolder") as PlaceHolder;
TextBox TextBox1 = new TextBox();
placeHolder.Controls.Add(TextBox1);
}
}
【讨论】:
placeHolder.Controls.Add 方法添加任意数量的控件。同样,如果您有两列,那么您必须在每列中放置一个占位符(显然有两个不同的 id),并且必须对其执行相同的工作。