【问题标题】:How can i add controls to a gridview dynamically?如何动态地将控件添加到gridview?
【发布时间】:2011-07-03 13:01:53
【问题描述】:

我有两列,如何动态添加一个或两个控件...每次创建一行时..

我也想动态创建列..通过迭代。

我如何做到这一点?

【问题讨论】:

  • 你是什么意思:- 我也想动态创建列..通过迭代。?

标签: asp.net gridview controls


【解决方案1】:

在要添加控件的列中放置一个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);
    }
}

【讨论】:

  • 所以每一行都会添加一个文本框。我有两列,但是,我怎么知道在什么中放置什么...我想在一个列中放置 2 个控件..另一个控件在另一个中
  • 您可以调用placeHolder.Controls.Add 方法添加任意数量的控件。同样,如果您有两列,那么您必须在每列中放置一个占位符(显然有两个不同的 id),并且必须对其执行相同的工作。
  • 但是你如何访问第二列或第一列..添加任何行时触发事件..为什么我需要事件/?..我如何触发它
  • 大声笑..没有解决这个问题..我无法将控件添加到两个不同的列
  • :) 没有什么是不可能的,别担心。
猜你喜欢
  • 1970-01-01
  • 2010-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-05
  • 1970-01-01
相关资源
最近更新 更多