2017-06-17 31 views
0

我有一個用戶控件,我想通過我的web表單中的循環創建一些實例。 一切正常,但所有實例都顯示相同的數據(最後一個實例的數據)!在ASP.Net中通過一個循環在一個webform中使用多個相同的用戶控件

我的代碼是:(我的用戶是:WebUserControl)

MyDataSet.tblMyDataTable oTable = new MyDataSet.tblMyDataTable(); 
    MyDataSetTableAdapters.tblMyTableAdapter oAdapter 
     = new MyDataSetTableAdapters.tblMyTableAdapter(); 
    oAdapter.Fill(oTable); 
    for (int i = 0; i < oTable .Count; i++) 
    { 
     Context.Items["ID"] = oTable[i].ID; 
     WebUserControl newControl = new WebUserControl(); 
     newControl = (WebUserControl)LoadControl("~/WebUserControl.ascx"); 
     newControl.ID = "myControl" + i.ToString(); 
     System.Web.UI.HtmlControls.HtmlTableRow newRow 
      = new System.Web.UI.HtmlControls.HtmlTableRow(); 
     System.Web.UI.HtmlControls.HtmlTableCell newCell 
      = new System.Web.UI.HtmlControls.HtmlTableCell(); 
     newCell.Controls.Add(newControl); 
     newRow.Controls.Add(newCell); 
     myTable.Rows.Insert(0, newRow); 
    } 

在Page_Load中的我uercontrol的情況下,我的代碼是:

myID = (string)Context.Items["ID"].ToString().Clone(); 
    ShowNewsSummary(myID); 

這ShowNewsSummary是填充字段的功能的用戶控制。

謝謝。

回答

1

你覆蓋在每次循環這個上下文項,也就是說只有最後一次迭代將保持...

Context.Items["ID"] = oTable[i].ID; 

Page_Load所有用戶控件後,才被解僱父頁'Page_Load`已完成。

所以你需要使用索引或ID存儲值...

newControl.ID = "myControl" + i.ToString(); 
Context.Items[newControl.ID] = oTable[i].ID; 

,然後讓用戶控件的值...

myID = (string)Context.Items[this.ID].ToString().Clone(); 
+0

哇!謝謝@freefaller。那就對了。 –

+0

沒問題。祝好運與您的其餘項目:-) – freefaller

相關問題