第六节:按列排序
我们在使用数据时,常常要对数据进行排序,那么在这方面datagrid为我们提供了什么呢?是不是像其他功能那样很轻松就可以实现呢?我刚刚体验了一下,答案是:真的很简单。
首先,我要设置datagrid的属性,允许它排序,属性名称是:allowsorting,默认是false,我们设置为true,这个时候,如果你编译运行的话,你就会发现每一列的标题都加上了超链接。不过,这个时候,你点击这些标题并没有什么反应,这是因为,你还没有为这些事件编写代码。我们到属性窗口创建事件onsortcommand()——单击列标题排序时候发生的事件。
你可以直接在这个函数中编写用于datagrid重新绑定数据的代码,我呢,这里还是想改造一下我前面一直在用的函数bindgrid()。
首先,我要给它增加一个参数,用于告诉程序,应该按照哪个列来排序,我的函数编程了bindgrid(string sortfield)
然后呢,我要增加一个dataview来对数据进行排序。我们来看详细的代码,注意,改动的部分,我用红色标出来:
public void bindgrid(string strsortfield)
{
string selectcmd="select 流水号 as id,姓名 as name,公司 as company from sheet1$";
sqldataadapter mycomm=new sqldataadapter(selectcmd,cn);
dataset ds=new dataset();
mycomm.fill(ds,"sheet1$");
dataview source=ds.tables["sheet1$"].defaultview;
source.sort=strsortfield;
datagrid1.datasource=source;///ds.tables["sheet1$"].defaultview;//原来是直接把ds的数据给datasource
datagrid1.databind();
}
我们在onsrotcommand事件中应用这个函数:
private void datagrid1_sortcommand(object source, system.web.ui.webcontrols.datagridsortcommandeventargs e)
{