GridView与DetailsView的联合使用
,。(SiteMapDataSource)。在实际应用中,用的较多的是ObjectDataSource。ObjectDataSource控件支持Web开发的三层架构,把表示层和数据层真正分开了。
ObjectDataSource允许指定一个类给它的TypeName属性。同时指定这个类的一个公共方法给它的SelectMethod属性。这可以是一个中间层的类,在这个类中可以调用数据层的方法也可以与数据层完全无关。与ObjectDataSource相连的GridView或DetailsView则只负责显示,而与数据逻辑无关。
要在GridView中显示数据只要把一个ObjectDataSource的ID赋给GridView的DataSourceID属性(实际上GridView中绑定的数据源只需要实现IEnumerable 或 ItypedList接口即可)。
在GridView的Smart Tag中有Choose Data Source的选项,可以选取页面中已存在的DataSource。选定DataSource后可以点击Configure Data Source,会出现下面的界面
在其中可以选择一个类,这个类的类名将会作为ObjectDataSource的TypeName属性。然后Next下去…
在这可以选择select、update、insert和delete分别对应的方法。但可以不选。一个ObjectDataSource的select方法是必须要有的,如果没有在这个界面中选择的话,可以在Page_Load方法中根据需要指定,例如(这个小示例与下面的例子无关):
[复制到剪贴板]
CODE:
void Page_Load(object sender, EventArgs e)
{
if (!)
{
if (("Administrator"))
{
= "sortParameter";
= "GetStudents";
}
else
{
(new Parameter("Name", , ));
= "sortParameter";
= "SelectStudent";
}
}
}
对于GridView的数据显示,一个常见的问题是:它根据什么生成行,又根据什么生成列呢?GridView需要的数据源只需实现IEnumerable 或ItypedList接口。所以ObjectDataSource的select方法的返回值也必然要遵守几个条件:实现IEnumerable 或ItypedList接口或直接是DataSet。如果返回值是DataSet,GridView会根据DataSet中的第一个Table生成行和列。否则,将枚举每一个返回值作为一行,并根据返回值的类型应用反射技术找出它的public属性作为列(前提是AltoGenerateColumn属性设为true)。例如:select方法返回类型是List<StrudentData>
StudentData类型有Name, Age, ID, Sex等属性,那么GridView就会将返回的每一个StudentData作为一行,并生成相应的Name, Age, ID, Sex列。
DetailsView如果想要显示GridView当中选定行的详细信息,则需要新建一个ObjectDataSource,这个ObjectDataSource的TypeName一般与第一个ObjectDat
GridView与DetailsView的联合使用 来自淘豆网www.taodocs.com转载请标明出处.