当前位置:中国站长下载文章中心网页编程ASP编程 → 亲密接触ASP.net(5)

亲密接触ASP.net(5)

减小字体 增大字体 作者:不详  来源:不详  发布时间:2006-8-13 0:53:59
     现在是已经是凌晨2点了,没有办法,现在只有这个时间才可能有多余的时间来写这些文章,希望我的这一系列文章能够帮助更多的人.我们这一节主要是要讲DataBind,这个在ASP.net中是很重要的东东,几乎所有的控件都需要它来控制数据的操作。也可以说是ASP.net的数据核心。
  
  我们先来看一个简单的例子:
  
  <% @ Page Language="C#" %>
  <% @ Import Namespace="System.Data" %>
  <Script Language="C#" Runat="Server">
  public void Page_Load(Object src,EventArgs e)
  {
   //首先建立一个数组
   ArrayList arr=new ArrayList();
   arr.Add("飞刀");
   arr.Add("Zsir");
   arr.Add("大风");
   arr.Add("布丁");
   arr.Add("亚豪");
  
   //将数组捆绑到DropDownList控件上去
   DDL.DataSource = arr;
   DDL.DataBind();
  }
  </script>
  <html>
  <head>
  <title></title>
  </head>
  <body>
  <asp:DropDownList id="DDL" runat="server" />
  </body>
  </html>
  
  最后的显示为:
  
   飞刀 Zsir 大风 布丁 亚豪
  
  我们在代码中可以看到我们建立了一个DropDownList,但是他没有<asp:ListItem>属性,而我们从最后的显示中依然可以看到我们所列出的选项。
  
  这里就是我们用DataBind的结果,在Page_Load方法中我们建立了一个数组(ArrayList),并通过DataBind方法将这个数组捆绑到了DropDownList控件中,使得DropDownList最后有数据显示:),怎么样对Bind有一定感性认识了吧。下面我们开始正式讲解
  
  其实DataBind(),不仅能对控件进行捆绑,而且还能够对页面中属性,方法进行捆绑,甚至整个页面都可以捆绑。比如,调用Page.DataBind()方法或者直接使用DataBind(),那么整个页面都将被捆绑,所有的数据全在监视之下。下面的例子,我们将使用DataBind方法来捆绑DropDownList,并获得其中的数据
  
  <% @ Page Language="C#" %>
  <% @ Import Namespace="System.Data" %>
  <Script Language="C#" Runat="Server">
  public void sub_Click(Object sender,EventArgs e)
  {
  Page.DataBind();
  }
  </script>
  <html>
  <head>
  <title></title>
  </head>
  <body>
  <form runat=server>
   <asp:DropDownList id="DDL" runat="server" >
   <asp:ListItem>ASP技术</asp:ListItem>
   <asp:ListItem selected>ASP.Net技术</asp:ListItem>
   <asp:ListItem>JSP技术</asp:ListItem>
   <asp:ListItem>PHP技术</asp:ListItem>
   <asp:ListItem>组件技术</asp:ListItem>
   </asp:DropDownList>
  <br>
  你现在选择的是:<font color=red><%# DDL.SelectedItem.Text %></font>区
  <br>
  <asp:Button id="sub" Text="提交" Type="submit" runat=server />
  </form>
  </body>
  </html>
  
  执行后,我们选择JSP技术我们点击"提交"按钮,看到情况是:
  
   ASP技术 ASP.Net技术 JSP技术 PHP技术 组件技术
  你现在选择的是:JSP技术区
  
  
  
  
  
  
  我们看到,那个红色的[JSP技术],我们并没有使用什么控件,但是他却能正确的显示我们的选择结果,这个是就捆绑的结果,注意<%# DDL.SelectedItem.Text %>这句话,正是它让我们取得了捆绑的数据。它看上去是不是像我们熟悉的<%=...%>这个语句,它们的使用方法相差不多,只是<%=...%>是在程序执行时调用,<%#... %>是在DataBind()方法之后被调用。以后我们还能经常看到他的身影,呵呵。
  
  接收Bind的控件,一般有DropDownList,DataList,DataGrid,ListBox这些集合性质的控件,而被捆绑的主要是ArrayList(数组),Hashtable(哈稀表),DataView(数据视图),DataReader这四个,以后我们就可以对号入座,不会出现DataTable被捆绑的错误了:)
  
  讲到Bind,就不能说一下DataBinder.Eval()方法.
  
  我们在使用DataBind,获得的数据,系统会将其默认为String(字符串),这对我们平时的输出显示提供了极大的方便,但是我们并不是每次都需要string类型,有时我们就需要Boolean,Int32这些类型。此时我们就需要转化类型了。可能大家最先想到的是String.Format方法,这是最好的,但是用法过于烦。所以最好不要这样啦。我们可以用DataBinder.Eval()方法,他的格式是:
  
  DataBinder.Eval(Container.DataItem,"转换的类型","格式")
  
  最后一个"格式"是可选的,一般不用去管他,Container.DataItem是捆绑的数据项,"转换类型"指的是Integer,String,Boolean这一类东西.
  
  有了它,我们处理数据就更加方便
  
  最后我们来看一个例子,关于DataView的捆绑,呵呵,老是用DropDownList烦了,这次用DataGrid,在这个例子中我们可以看到"表是怎样炼成的"
  
  <% @ Page Language="C#" %>
  <% @ Import Namespace="System.Data" %>
  <Script Language="C#" Runat="Server">
  public void Page_Load(Object src,EventArgs e)
  {
  int i;
  //建立表数据
  DataTable dt=new DataTable();
  DataRow dr;
  //建立Column例,可以指明例的类型,这里用的是默认的string
  dt.Columns.Add(new DataColumn("编号"));
  dt.Columns.Add(new DataColumn("用户名"));
  for(i=1;i<8;i++)
  {
  dr=dt.NewRow();
  dr[0]=Int32.ToString(i);
  dr[1]="aspcn"+Int32.ToString(i);
  dt.Rows.Add(dr);
  }
  //捆绑
  DG1.DataSource = new DataView(dt);
  DG1.DataBind();
  
  
  }
  </script>
  <html>
  <head>
  <title></title>
  </head>
  <body>
  <asp:DataGrid id="DG1" runat=server align=center HeaderStyle-BackColor="#aaaadd" />
  
  </body>
  </html>
  
  我们见到的情况是: 编号 用户名
  1 aspcn1
  2 aspcn2
  3 aspcn3
  4 aspcn4
  5 aspcn5
  6 aspcn6
  7 aspcn7
  
  
  关于这个程序我就不多说了,程序中有说明,只是要注意我们这里bind的是DataView,不是DataTable,这是一个常犯的错误:)
  
  到这里我们的基础讲完了,大家要多多去熟悉一下Web控件,不然以后不知所云的:)
  
  后面,我们将花几个节来谈一下,数据库的调用.
  
   (转自aspcn.com)
    做人要厚道,请注明转自chinazhan中国站长(www.ChinaZhan.com)。