我正在嘗試編寫自定義控件。我想讓它的用戶指定一個DataSourceId(很像GridView,Repeater等)。自定義控件使用DataSourceId
我可以找到對應於該id的數據源。我可以得到關聯的DataSourceView。但是,獲取數據的唯一方法似乎是採用異步選擇方法。當然,我可以設置回調,使我的代碼阻塞,直到回調發生。但是這需要很多怪異的旋轉,所以我懷疑我做錯了什麼。
如果我想讓一個控件像其他一些ASP.NET數據控件一樣工作,我應該做些什麼改變?
這裏有點我寫:
string dataSourceId = "SomeDataSourceForTesting";
protected override void RenderContents(HtmlTextWriter writer)
{
IDataSource ds = (IDataSource)Parent.FindControl(dataSourceId);
List<string> viewNames = new List<string>();
foreach(string name in ds.GetViewNames())
{
viewNames.Add(name);
}
string viewname = viewNames[0];
writer.WriteLine("the viewname is " + viewname);
DataSourceView view = ds.GetView(viewname);
view.Select(...); //this really has to be asynchronous?
//write out some stuff from the data source
}
完美。我想我錯過了這樣的事情。謝謝! – Eric 2009-12-02 17:52:21