ASP.NET:如何从数据库加载用户控件并向其发送参数?

时间:2014-01-04 10:54:19

标签: c# asp.net

我有一个表,其中包含用户控件名称和页面中的位置。在页面加载中,每个位置的所有面板都加载一个用户控件 我的立场是这样的:
this image shows each user control place in specific cell of table in default page
这是我的代码从DataBase加载usercontrol名称并将它们设置为像这个图像的位置,但我想发送参数到每个用户控件,但如何?

private void loadUCposition()
{
    string sql = "select ucname,positionid,StringParameter from Position p inner join modulename mn on p.modulid=mn.ucid" +
        "";
    DataTable dt = ADO.setDg_DataTable(sql);

    foreach (DataRow row in dt.Rows)
    {
        string pos = row[1].ToString();
        string ucs = row[0].ToString();
        Panel p = this.Master.FindControl("ContentPlaceHolder1").FindControl("p"+pos) as Panel;

        UserControl uc = new UserControl();
        if (ucs.IndexOf(".ascx") > 0)
        {

            uc = this.LoadControl(ucs) as UserControl;
        }
        else
        {
            uc = this.LoadControl(ucs + ".ascx") as UserControl;
        }
        uc = this.LoadControl(ucs) as UserControl;
        p.Controls.Add(uc);
    }
}

1 个答案:

答案 0 :(得分:1)

当你指的是为用户控件设置参数时,我想你的意思是在标记中设置值;

<myUserControl parameter1="1" parameter2="2" />

上面的语法只是包装。 myUserControl是一个C#类,这些参数是所述类的变量。 (虽然是自动生成的类)

要修改用户控件实例的位置,然后访问其变量并进行更改。

在你的例子中:

uc = this.LoadControl(ucs) as UserControl;
p.Controls.Add(uc);
// Modify new instance's public member variables
uc.positionX = 123123;
uc.parameter1 = 1;
uc.parameter2 = 2;