사용자 지정 컨트롤을 쓰려고합니다. 나는 그 사용자가 DataSourceId (GridView, Repeater 등과 같이)를 지정할 수 있도록하고 싶다.사용자 지정 컨트롤에서 DataSourceId를 사용합니다.
id에 해당하는 DataSource를 찾을 수 있습니다. 그리고 관련된 DataSourceView를 얻을 수 있습니다. 그러나 데이터를 가져 오는 유일한 방법은 비동기 Select 메서드를 사용하는 것입니다. 물론 콜백을 설정할 때까지 콜백이 발생할 때까지 코드가 차단되도록 콜백을 설정할 수 있습니다. 그러나 이것은 내가 이상한 일을하고 있다고 의심하는 수많은 이상한 회전을 요구합니다.
다른 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