我想知道直接分配屬性綁定到一個asp動態創建的用戶控件的最佳方法:直放站。考慮下面的代碼。分配屬性用戶控件數據綁定到ASP:直放站
在代碼隱藏的用戶控件 「MyControlType」:
public bool IsRetained = false;
在頁面代碼:
在頁面代碼隱藏:
protected List<MyControlType> dataSource = new List<MyControlType>();
protected void someButton_Click(object sender, EventArgs e)
{
MyControlType myItem = (MyItem)Page.LoadControl("~/MyMath/MyControlType.ascx");
dataSource.Add(myItem);
myItem.IsRetained = true;
repeater.DataBind();
// test code
MyControlType realItem = repeater.Items[0].Controls[1] as MyControlType;
bool test0 = realItem.IsRetained; // false
bool test1 = myItem == realItem; // false
}
新MyControlType是成功綁定到Repeater並顯示在頁面上,但它沒有我設置的IsRetained值。它也不是我分配給dataSource的MyControlType實例。
我可以完成我想通過獲得對創建MyControlType參考類似我如何與realItem的確在上面的例子,但我寧願財產直接通過myItem分配。任何人都可以提供這樣做的方法嗎?這也很好理解爲什麼test0和/或test1是錯誤的。謝謝!
感謝,但有問題的控制將是許多在Repeater控件中的一個,我不明白有多麼一個ViewState屬性會有所幫助。是的,我可以用稍微更復雜的方式將它們填充到ViewState中,但我甚至不主要關注在此示例中持續回傳 - 僅在數據綁定時成功包含簡單屬性。 – chris4600
對不起,無法理解你的意思是「衆多之一」。中繼器中的每個用戶控件實例都將使用不同的ViewState。 – afzalulh
謝謝,你是對的,我誤解了一些東西。我最終可能會使用這種方法。 – chris4600