我有一个表,其中包含用户控件名称和页面中的位置。在页面加载中,每个位置的所有面板都加载一个用户控件
我的立场是这样的:
这是我的代码从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);
}
}
答案 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;