簡體   English   中英

ASP.NET:如何從數據庫加載用戶控件並將參數發送給它?

[英]ASP.NET : How to load user control from database and send parameter to it?

我有一個包含用戶控件名稱和頁面位置的表。 在頁面加載中,每個位置的所有面板都加載一個用戶控件。
我的位置是這樣的:
此圖像顯示默認頁面中表的特定單元格中的每個用戶控件位置
這是我的代碼,用於從數據庫中加載用戶控件名稱並將其設置為該圖像的位置,但是我想向每個用戶控件發送參數,但是如何呢?

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);
    }
}

當您指的是為用戶控件設置參數時,我想您的意思是在標記中設置值。

<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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM