【问题标题】:Add ASP Controls to a Table Dynamically将 ASP 控件动态添加到表中
【发布时间】:2012-02-24 14:42:28
【问题描述】:

现在我有一个 ASP 表。我可以在这个表中添加行和单元格。我想做的不是单元格只显示文本,而是添加一个控件。例如一个按钮。

现在,我首先想到的就是将<ASP:Button ... 作为表格单元格的.Ttext 属性。但我的直觉告诉我这行不通。此外,我可能无法添加处理按钮单击的函数。

有人可以帮我指出如何实现这一目标的正确方向吗?

【问题讨论】:

  • 向我们展示你目前拥有的东西。

标签: asp.net asp.net-controls


【解决方案1】:

您需要将控件添加到表格单元格。只需在单元格上调用 Controls.Add 方法并添加您的控件。下面是一个简短的草图,可以为您指明正确的方向。

        Button b = new Button();
        c.Controls.Add(b);

【讨论】:

    【解决方案2】:

    以下假设您的页面上有一个空白的 ASP:Table,其中包含一些已定义的行(仅用于展示)。

    protected void Page_Init(object sender, EventArgs e)
    {
        foreach (TableRow row in this.Table1.Rows)
        {
            foreach (TableCell cell in row.Cells)
            {
                Button btn = new Button();
                btn.Text = "Some Button";
                btn.Click += new EventHandler(btn_Click);
                cell.Controls.Add(btn);
            }
        }
    }
    
    void btn_Click(object sender, EventArgs e)
    {
        ((Button)sender).Text = "Just Clicked";
    }
    

    【讨论】:

    • 我正在创建一个System.Web.UI.WebControls.Button,但它似乎没有.Click 属性。我是否创建了错误类型的 Button?
    • .Click 是一个事件,而不是一个属性。你用的是VB还是C#??
    【解决方案3】:

    问题在于您的控件的来源是什么。到目前为止,实现这一点的最有效方法是通过data binding,即使您的数据源只是Enumerable.Range() 函数。

    如果做不到这一点,您需要创建控件的实例并将它们添加到控件所属的表格单元格集合中。您可以只使用+= 语法来添加事件处理程序。这里的诀窍是创建和添加按钮的代码需要在每个回发时再次运行,并且需要在 之前asp 的 page_load 阶段运行。净生命周期。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多