【问题标题】:Dynamically create a UserControl with parameters动态创建带参数的 UserControl
【发布时间】:2015-11-30 14:51:20
【问题描述】:

我创建了一个包含网格的UserControl

在主页中,用户可以从一个组合中选择选项,然后,我需要为用户选择的每个选项生成一个UserControl

我有两个问题:

  1. 我需要将参数传递给用户控件以配置网格的数据源,但我不知道该怎么做。

  2. 如果我为测试设置默认参数,当 PostBack 发生时,用户控件将被删除。

【问题讨论】:

  • 请贴一些代码。不能在usercontrol构造函数中传参数吗?

标签: c# asp.net webforms user-controls


【解决方案1】:

我没有看到你的任何代码,所以我在这里给你一个简单的例子。

首先,为需要传入的值定义一个属性:

public partial class SomeControl : System.Web.UI.UserControl
{
    public int AProperty { get; set; }

    ...
}

那么,从你需要使用用户控件的aspx,首先照常注册:

<%@ Register Src="~/MyControls/SomeControl.ascx" TagPrefix="my" TagName="SomeControl" %>

稍后使用它,并将值传递给属性,如下所示:

<my:SomeControl runat="server" ID="SomeControl1" AProperty="1" />

您还可以从包含控件的aspx 后面的代码中设置该属性,如下所示:

SomeControl1.AProperty = 1;

动态控制
您可以像这样动态创建此控件:

var ctrl = new SomeControl();
ctrl.AProperty = 1;

稍后将这些控件添加到您的aspx 中的&lt;asp:PlaceHolder

somePlaceHolder.Controls.Add(ctrl);

在回发时(即在下拉列表的 selectedindexchanged 上),该占位符内的所有控件都将消失,但信息仍在您的视图状态中,因此您需要做的就是在同一占位符内重新创建相应的控件,然后视图状态中的旧值将附加到重新创建的控件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多