ASP.NET数据库内容在DATAGRID显示

 

以前在ASP中,我们显示大批量数据经常使用循环读取记录集的方式,在表格中插入代码来显示,循环的是<tr>,如果是分页还需要自己制作,如果排序更加复杂,在ASP.NET中就好了,一切工作都可以让DATAGRID来做。

首先看一下DATAGRID的样式方面的属性: BackImageUrl="" (背景图片); CellSpacing="" (单元格间距); CellPadding="" (单元格填充); cssClass="" (使用的CSS样式); DATAGRID可以自动用表中的字段名放在显示的记录的头部来表示各个单元格所代表的意义,用ShowHeader="true/false"来控制是不是显示,在大多数情况下我们是不需要这个功能的,因为我们数据库中的字段名大多是英文的,而我们想在页面输出的大多是中文名字。下面看一下显示数据库内所有记录,就几行代码:

1.        <script runat="server" language="c#">

2.        void Page_Load()

3.        {

4.        string strConnection="Provider=Microsoft.Jet.OleDb.4.0;Data Source=";

5.        strConnection+=Server.MapPath("guestbook.mdb");

6.        OleDbConnection objConnection=new OleDbConnection(strConnection);

7.        OleDbCommand objCommand1 = new OleDbCommand("select * from guestbook",objConnection);

8.        objConnection.Open();

9.        dgrdMain.DataSource=objCommand1.ExecuteReader();//dgrdMain就是下面的DATAGRID的ID

10.     dgrdMain.DataBind();

11.     objConnection.Close();

12.     }

13.     </script>

14.     <html>

15.     <body>

16.     <asp:DataGrid

17.     id="dgrdMain"

18.     cellpadding="1"

19.     showheader="true"

20.     borderwidth="0"

21.     runat="server"

22.     />

23.     </body>

24.     </html>

假设数据库是三个字段:id,aa,bb 显示的样子就如下:id aa bb 1 werwe rewrwe 2 werwe rewrwe 。

id  aa     bb

1 werwe rewrwe

2 werwe rewrwe

我们一定觉得这种显示不满意,我们有两种显示的方式(需要包括在<columns></columns>中间): 一、默认的列,我们可以选择不输出所有的字段还可以安排顺序: <asp:BoundColumn DataField="想要显示的字段名"> 比如说我们想按照bb,aa来输出这个表,我们这么写

1.        <asp:DataGrid

2.        id="dgrdMain"

3.        cellpadding="1"

4.        showheader="true"

5.        autogeneratecolumns="false"

6.        borderwidth="0"

7.        runat="server">

8.        <columns>

9.        <asp:boundcolumn datafield="bb"/>

10.     <asp:boundcolumn datafield="aa"/>

11.     </columns>

12.     </asp:datagrid>

注意使用了autogeneratecolumns="false"以后DATAGRID就不会自动输出所有字段了。 二、模板列,我们可以定制每一个单元格的样式: <asp:emplateColumn> <itemTemplate> 中间是一个表格,可设置成自己想要的样式 </itemTemplate> </asp:ataGrid> ,或许你们要说怎么在表格中输出代码那,可以使用<%# DataBinder.Eval(Container.DataItem,"字段名").ToString()%> 。

下面看一个例子,我们所要做的就是把aa,bb两个字段放在一个单元格内显示,就好像下面一样: 1 werwe rewrwe  2 werwe rewrwe  我们这样写代码:

1.        <asp:DataGrid

2.        id="dgrdMain"

3.        cellpadding="1"

4.        showheader="false"

5.        autogeneratecolumns="false"

6.        borderwidth="0"

7.        runat="server">

8.        <columns>

9.        <asp:boundcolumn datafield="ii"/> 首先使用默认的显示方式显示ID

10.     <asp:TemplateColumn> 再使用模板来显示后面一列(由AA,BB并列组成)

11.     <itemTemplate>

12.     <table border="0" cellspacing="0" cellpadding="0" width="100%">

13.     <tr>

14.     <td><%# Container.DataItem("aa")%></td>

15.     </tr>

16.     <tr>

17.     <td><%# Container.DataItem("bb")%></td>

18.     </tr>

19.     </table>

20.     </itemTemplate>

21.     </asp:DataGrid>

22.     </columns>

23.     </asp:datagrid>

 

 

DATAGrid的分页显示:

虽然说DATAGRID的分页显示效率不怎么高,但是不管怎么说,它是最方便的分页显示,对于做一个留言簿还是相当简单实用的。对于启用分页功能还有一个重要要求,只能在DATADRID控件的数据源实现了ICOLLECTION接口的情况下才能启用分页功能,而DATAREADER没有这个接口,所以必须使用DATATABLE来代替。

1.        <script runat=&quot;server&quot; language=&quot;c#&quot;>

2.        void Page_Load()

3.        {

4.        string strConnection=&quot;Provider=Microsoft.Jet.OleDb.4.0;Data Source=&quot;;

5.        strConnection+=Server.MapPath(&quot;guestbook.mdb&quot;);

6.        OleDbConnection objConnection=new OleDbConnection(strConnection);

7.        OleDbDataAdapter objDataAdapter=new OleDbDataAdapter(&quot;select * from guestbook&quot;,objConnection);

8.        DataSet objDataSet=new DataSet();

9.        objDataAdapter.Fill(objDataSet);

10.     dgrdMain.DataSource=objDataSet;

11.     dgrdMain.DataBind();

12.     }

13.     void dgrdMain_PageIndexChanged(Object sender, DataGridPageChangedEventArgs e)

14.     {

15.     dgrdMain.CurrentPageIndex = e.NewPageIndex;

16.     DataBind(); //数据绑定方法

17.     }

18.     </script>

19.     <html>

20.     <body>

21.     <asp:DataGrid

22.     id=&quot;dgrdMain&quot;

23.     cellpadding=&quot;1&quot;

24.     showheader=&quot;true&quot;

25.     borderwidth=&quot;0&quot;

26.     allowpaging=&quot;true&quot; 启用分页功能

27.     pagesize=&quot;3&quot; 每一页显示三条记录

28.     onpageindexchanged=&quot;dgrdMain_pageindexchanged &quot; 调用第×页的函数为dgrdMain_PageIndexChanged()

29.     runat=&quot;server&quot;

30.     />

31.     </body>

32.     </html>

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值