技巧百问(8):再谈ASP.NET中DataGrid数据绑定以及分页!

        DataGrid使用的很多,其中数据绑定以及分页是个老问题,这里我只是把我个人的一点经验说一说,毕竟我还是新手。
        DataGrid绑定有很多种,可以用DataView,DataReader,DataSet这些来绑定,还可以使用自定义控件来绑定,其实说穿了也就是数据对应显示。而分页也有很多种:1、使用sql语句,select top 10 from xxx where xxx,后面就加not in (select top 10 from xxx where xxx)。2、使用一次读取数据,然后通过程序控制分页。
下面是一个简单分页以及绑定的过程:


先创建DataGrid
1 <asp:DataGrid AllowPaging="true" AllowSorting="true" AutoGenerateColumns="false" Width="100%" OnPageIndexChanged="changepage"
2     FooterStyle-BackColor="#0099FF" ID="datagrid1" ItemStyle-BackColor="#006699" PagerStyle-NextPageText="下一页" PagerStyle-PrevPageText="上一页" PageSize="20" runat="server">
3     <columns>
4        <asp:BoundColumn HeaderText="用户编号" HeaderStyle-Width="100" ItemStyle-Width="50" DataField="_userid"/>
5        <asp:BoundColumn HeaderText="用户名" HeaderStyle-Width="100" ItemStyle-Width="100" DataField="id"/>
6        <asp:BoundColumn HeaderText="电子邮件" HeaderStyle-Width="150" ItemStyle-Width="150" DataField="email"/>
7        <asp:BoundColumn HeaderText="类型" HeaderStyle-Width="50" ItemStyle-Width="50" DataField="type"/>
8     </columns>
9     </asp:DataGrid>

其中AllowPaging是允许自动分页,AllowSorting是允许自动排序,AutoGenerateColumns是允许自动生成列(如何要自己定义列这里就要设为false),后面就是分页的事件,PagerStyle-mode是分页时候下面显示的类型,默认是上一页,下一页那种,还有就是NumericPages,显示的是12345那种类型。下面的columns中就是要显示的列,后面DataField就是要绑定的字段名。

然后就是写Page_Load代码,一开始就要绑定,所以就是查询数据库获取数据

1 string sql="select _userid,id,type,email from user where city!='空' order by _userid desc";
2 string connstr="uid=sa;password=123;database=kkk;server=(local)";
3          SqlConnection conn=new SqlConnection(connstr);
4          SqlDataAdapter comm=new SqlDataAdapter(sql,conn);
5          DataSet isset=new DataSet();
6          comm.Fill(isset,"User");
7          DataView isview=new DataView(isset.Tables["User"]);
8          datagrid1.DataSource=isview;
9          datagrid1.DataBind();

这里就是使用DataView的方式绑定的,先定义连接,再通过SqlDataAdapter读取数据,再把数据填充到DataSet中的User表中,把DataSet表中的内容给DataView,然后就绑定DataGrid。其实这很简单,在我前面发的DataGrid和XML读取数据中有读取XML数据绑定的方法,其中还可以设置Sort来排顺。

接下来是定义DataGrid中分页的事件

1 datagrid1.CurrentPageIndex=e.NewPageIndex;
2 binding();
其中的binding()就是上面的绑定代码,这里可以把之前的绑定代码写成函数来调用。
这样就完成了简单的数据读取,绑定以及分页。
 

        在使用的过程中我们有时候需要把查询的数据进行处理后显示,比如查询到用户的类型1,但是我们需要看到是普通用户还是特殊用户,这里就需要使用自定义控件来时间了。
1 <%@ Register TagPrefix="user" TagName="money" Src="xxx.ascx" %>
2 
3 <asp:TemplateColumn HeaderText="充值数量" HeaderStyle-Width="70" ItemStyle-Width="200">
4     <itemtemplate><user:money id="check1" runat="server" uid=<%# DataBinder.Eval(Container.DataItem,"id")%>/> 
5     </itemtemplate>
6 </asp:TemplateColumn>

这里就是先编写xxx.ascx,然后在网页中注册标签(第一行就是),然后在DataGrid中使用,这里要使用asp:TemplateColumn来绑定。其中的<%# DataBinder.Eval(Container.DataItem,"id")%>就是绑定的内容,而前面的就是引用自定义的控件。顺便说一下columns中的绑定方法:之前示范的是一种,还有的是使用最先的DataFiled的方法,还有一种就是之前示范的用asp:TemplateColumn,不过在itemtemplate中用<%# DataBinder.Eval(Container.DataItem,"id")%>

以上就是一些简单的DataGrid使用方法,大家交流交流。
posted on 2005-12-01 14:11  kkk  阅读(1149)  评论(0编辑  收藏  举报