凹丫丫网络社区's Archiver

凹丫丫 发表于 2007-10-20 14:48

十天学会ASP.net(8~10)[推荐]

[b][color=#ff0000]第八天
  [/color][color=#000000]学习目的:[/color][/b][color=#000000]初步掌握DATAGRID的使用
  以前在ASP中,我们显示大批量数据经常使用循环读取记录集的方式,在表格中插入代码来显示,循环的是<tr>,如果是分页还需要自己制作,如果排序更加复杂,在ASP.NET中就好了,一切工作都可以让DATAGRID来做。[b]  首先看一下DATAGRID的样式方面的属性
  [/b]BackImageUrl="" 背景[color=#000000]asp[/color]>[color=#000000]图片[/color]
CellSpacing="" 单元格间距
CellPadding="" 单元格填充
cssClass="" 使用的CSS样式
DATAGRID可以自动用表中的字段名放在显示的记录的头部来表示各个单元格所代表的意义,用ShowHeader="true/false"来控制是不是显示,在大多数情况下我们是不需要这个功能的,因为我们数据库中的字段名大多是英文的,而我们想在页面输出的大多是中文名字。
[b]  下面看一下显示数据库内所有记录,就几行代码:[/b]
<script runat="server" language="c#">
void Page_Load()
{
string strC;
strConnection+=Server.MapPath("guestbook.mdb");
OleDbConnection objConnection=new OleDbConnection(strConnection);
OleDbCommand objCommand1 = new OleDbCommand("select * from guestbook",objConnection);
objConnection.Open();
dgrdMain.DataSource=objCommand1.ExecuteReader();//dgrdMain就是下面的DATAGRID的ID
dgrdMain.DataBind();
objConnection.Close();
}
</script>
<[color=#000000]html[/color]>
<body>
<[color=#000000]asp[/color]:DataGrid
id="dgrdMain"
cellpadding="1"
showheader="true"
borderwidth="0"
runat="server"
/>
</body>
</[color=#000000]html[/color]>

至于VB的版本,这次大家自己来试试吧:)
假设数据库是三个字段:id,aa,bb
显示的样子就如下:
id aa bb 1 werwe rewrwe 2 werwe rewrwe我们一定觉得这种显示不满意,我们有两种显示的方式(需要包括在<columns></columns>中间):
[b]  一、默认的列,我们可以选择不输出所有的字段还可以安排顺序:[/b]

<[color=#000000]asp[/color]:BoundColumn DataField="想要显示的字段名">
比如说我们想按照bb,aa来输出这个表,我们这么写
<[color=#000000]asp[/color]:DataGrid
id="dgrdMain"
cellpadding="1"
showheader="true"
autogeneratecolumns="false"
borderwidth="0"
runat="server">
<columns>
<[color=#000000]asp[/color]:boundcolumn datafield="bb"/>
<[color=#000000]asp[/color]:boundcolumn datafield="bb"/>
</columns>
</[color=#000000]asp[/color]:datagrid>
[b]  注意:[/b]使用了autogeneratecolumns="false"以后DATAGRID就不会自动输出所有字段了。

   [b] 二、以模板列,我们可以定制每一个单元格的样式:

  [/b]<[color=#000000]asp[/color]:TemplateColumn>
<itemTemplate>
中间是一个表格,想怎么样就怎么样
</itemTemplate>
</[color=#000000]asp[/color]:DataGrid>
或许你们要说怎么在表格中输出代码那,可以使用<%# DataBinder.Eval(Container.DataItem,"字段名").ToString()%>
下面看一个例子,我们所要做的就是把aa,bb两个字段放在一个单元格内显示,就好像下面一样:

1 werwe
rewrwe 2 werwe
rewrwe
[b]  我们这样写代码:
  [/b]<[color=#000000]asp[/color]:DataGrid
id="dgrdMain"
cellpadding="1"
showheader="false"
autogeneratecolumns="false"
borderwidth="0"
runat="server">
<columns>
<[color=#000000]asp[/color]:boundcolumn datafield="ii"/> 首先使用默认的显示方式显示ID
<[color=#000000]asp[/color]:TemplateColumn> 再使用模板来显示后面一列(由AA,BB并列组成)
<itemTemplate>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td><%# Container.DataItem("aa")%></td>
</tr>
<tr>
<td><%# Container.DataItem("bb")%></td>
</tr>
</table>
</itemTemplate>
</[color=#000000]asp[/color]:DataGrid>
</columns>
</[color=#000000]asp[/color]:datagrid>
今天就说到这里,明天我们来看一下DATAGRID的分页显示等功能

[/color]

凹丫丫 发表于 2007-10-20 14:50

十天学会ASP.net(8~10)[推荐]

[b][color=#ff0000]第九天

[/color][/b]  学习目的:学会用DATAGRID分页显示

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

  <script runat="server" language="c#">
  void Page_Load()
  {  
  string strC;
  strConnection+=Server.MapPath("guestbook.mdb");
  OleDbConnection objConnection=new OleDbConnection(strConnection);
  OleDbDataAdapter objDataAdapter=new OleDbDataAdapter("select * from guestbook",objConnection);
  DataSet objDataSet=new DataSet();
  objDataAdapter.Fill(objDataSet);
  dgrdMain.DataSource=objDataSet;
  dgrdMain.DataBind();
  }
  void dgrdMain_PageIndexChanged(Object sender, DataGridPageChangedEventArgs e)
  {
  dgrdMain.CurrentPageIndex = e.NewPageIndex;  
  DataBind();  
  }  
  </script>
  <[url=http://www.xfly.com.cn/Article/Dev/webprogram/aspnet/media.shtml][color=#000000]html[/color][/url]>
  <body>  
  <[url=http://www.xfly.com.cn/Article/Dev/webprogram/aspnet/seita.asp?tyid=5&tyepid=20][color=#000000]asp[/color][/url]:DataGrid  
  id="dgrdMain"  
  cellpadding="1"  
  showheader="true"  
  borderwidth="0"
  allowpaging="true" 启用分页功能
  pagesize="3" 每一页显示三条记录  
   调用第×页的函数为dgrdMain_PageIndexChanged()
runat="server"  
  />  
  </body>
  </[url=http://www.xfly.com.cn/Article/Dev/webprogram/aspnet/media.shtml][color=#000000]html[/color][/url]>  

  <script runat="server" language="vb">
  subPage_Load
  dim objConnection as OleDbConnection
  dim objDataAdapter as OleDbDataAdapter
  dim objDataSet as DataSet
  objConnection=new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source="+Server.MapPath("guestbook.mdb"))
  objDataAdapter=new OleDbDataAdapter("select * from guestbook",objConnection)
  objDataSet=new DataSet
  objDataAdapter.Fill(objDataSet)
  dgrdMain.DataSource=objDataSet
  dgrdMain.DataBind()
  end sub
  sub dgrdMain_PageIndexChanged(sender as object,e as datagridpagechangedeventargs)
  dgrdMain.CurrentPageIndex = e.NewPageIndex
  DataBind
  end sub
  </script>
  <[url=http://www.xfly.com.cn/Article/Dev/webprogram/aspnet/media.shtml][color=#000000]html[/color][/url]>
  <body>
  <[url=http://www.xfly.com.cn/Article/Dev/webprogram/aspnet/seita.asp?tyid=5&tyepid=20][color=#000000]asp[/color][/url]:DataGrid
  id="dgrdMain"
  cellpadding="1"
  showheader="true"
  borderwidth="0"
  allowpaging="true" 启用分页功能
  pagesize="3" 每一页显示三条记录
   调用第×页的函数为dgrdMain_PageIndexChanged()
runat="server"
  />
  </body>
  </[url=http://www.xfly.com.cn/Article/Dev/webprogram/aspnet/media.shtml][color=#000000]html[/color][/url]>
  这样就是最简单的分页,我们可以用参数pagestyle-mode="nextprev/numericpages"来设定是显示上一页、下一页方式还是直接选择页面的[url=http://www.xfly.com.cn/Article/Dev/webprogram/aspnet/Meit.shtml][color=#000000]数字[/color][/url]方式来实现页面跳转。如果是前者我们可以用pagestyle-nextpagetext来设定包含下一页链接的文本,用pagestyle-prevpagetext来设定包含上一页链接的文本;如果是后者我们可以用PagerStyle-PageButtonCount来设定在使用省略号之前显示的页面编号数量(默认是10)
  今天就说到这里,明天说一下SESSION和COOKIE。

凹丫丫 发表于 2007-10-20 14:51

十天学会ASP.net(8~10)[推荐]

[b][color=#ff0000]第十天
[/color][/b]   学习目的:学会SESSION和COOKIE的使用

     在各个[color=#000000]网页[/color]间的变量传递和一些记录用户的登陆信息要用到SESSION和COOKIE。在ASP.NET中使用COOKIE比ASP中稍微麻烦一点,因为我们要申明变量。  首先看一下SESSION的使用,基本和ASP差不多
  写入一个SESSION:
  Session["username"])="aa";
  ---------------------
  Session("username")="aa"
  读取一个SESSINN:
  string username= Session["username"];
  -------------------------
  dim username=Session("username")
  再来看一下COOKIE的写入:
  DateTime dt=DateTime.Now; //需要<%@Import Namespace="System"%>,得到当前时间
  HttpCookie mycookie=new HttpCookie("logname");//申明新的COOKIE变量
  mycookie.Value="aa";//赋值
  mycookie.Expires=Convert.ToDateTime(dt+TimeSpan.FromDays(1));//设定过期时间为1天
  Response.Cookies.Add(mycookie1);//写入COOKIE
  
  
  dim dt as DateTime
  dt=DataTime.Now
  dim mycookie as HttpCookie
  mycookie=new HttpCookie("logname")
  mycookie.Value="aa"
  mycookie.Expires=Convert.ToDateTime(dt+TimeSpan.FromDays(1))
  Response.Cookies.Add(mycookie1)
  看一下COOKIE的读取:
  HttpCookie mycookie=Request.Cookies["username"];
  string username=mycookie.Value;
  -----------------------
  dim mycookie as HttpCookie
  mycookie=Request.Cookies["username"]
  dim string=mycookie.Value
  到此《十天学会ASP.NET》结束了,时间仓促,还请大家原谅写的不全,实际上我只是带大家入门,学会还要靠自己啊。

lucheck 发表于 2008-9-2 09:55

第8课没法收藏了。

stilcome01 发表于 2008-9-25 17:20

鸟叫山更静

**** 作者被禁止或删除 内容自动屏蔽 ****

dazuiyu 发表于 2008-9-26 14:47

努力学习,天天回帖!!

yuan_lai_a2008 发表于 2008-10-28 23:54

常州代理记帐,常州代理公司注册

**** 作者被禁止或删除 内容自动屏蔽 ****

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2007 Comsenz Inc.