数据源绑定

ASP.NET数据绑定总结

概念:

数据绑定(data binding):数据源与服务器控件的关联,“数据绑定”是一种把数据绑定到一种用户界面元素(控件)的通用机制。

分类:

ASP.NET中涉及到的数据绑定大概可以分为:

使用<%# 表达式 %>
使用DataSource属性
使用数据源控件

使用Eval方法

使用<%# 表达式 %> 绑定数据源

对于这种绑定方式,无论是Html标记,还是Web服务器控件都是实用的。

属性绑定:

例:将HTML文本框文本要绑定到页面的一个字段name(注:这个字段必须为公有字段或受保护字段,即访问修饰符为public或protected),在HTML源中可以这样绑定。

<INPUT type="text" value="<%# name %>"> 

集合绑定:

Web服务器控件绑定。

<asp:ListBox id="List1" datasource=‘<%# myArray %>‘ runat="server">

此句子将数组myArray绑定到ListBox控件。

表达式的绑定:

<%# ( customer.First Name + " " + customer.LastName ) %>

方法绑定:

<%# GetBalance(custID) %>

在为对象确定并设置了特定数据源后,必须将数据绑定到这些数据源。使用的方法是:

Page.DataBind 或Control.DataBind 两种方法。

这两种方法的使用方式很相似。主要差别在于:调用 Page.DataBind 方法后,所有数据源都将绑定到它们的服务器控件。Control.DataBind方法,将数据源绑定到被调用的服务器控件及其所有子控件。

在显式调用 Web 服务器控件的 DataBind 方法或在调用页面级的 Page.DataBind 方法之前,不会有任何数据呈现给控件。通常,可以从 Page_Load 事件调用 Page.DataBind(或 DataBind)。

使用DataSource属性绑定数据源

通常使用DataSource属性进行数据源绑定的为list-bound控件( 连接到数据源并把来自数据源的数据显示出来的Web服务器控件)。

控件 描述
CheckBoxList 复远框组,可通过数据绑定动态生成
GridView 像表格中一样分列显示数据源的字段
DataList 用来显示模板定义的数据绑定列表
DropDownList 单选下拉列表框控件
ListBox 允许单选或多选的列表控件
RadioButtonList 可通过数据绑定自动生成一组单选按钮
……. …….

使用list-bound控件显示DataSet

DataSet可看成是内存中的一个虚拟的数据库,我们只要

将list-bound控件的DataSource属性链接到数据源,ASP.NET

会自动给list-bound控件填充数据。把list-bound控件同一个

DataSet绑定在一起,必须设置以下属性:

属性 描述
DataSource 指定包含数据的DataSet
DataMember 因为DataSet中可能有多个数据表,所以指定要显示的DataTable表名
DataTextField 指定将在列表中显示的DataTable字段
DataValueField 指定DataTable中某字段,此字段将成为列表中被选中的值

使用DataSource数据源后,还需要调用list-bound控件的DataBind方法来连接DataSet、DataReader等数据源。

例如:

CheckBoxList.DataBind();

完整的绑定示例:

与DataSet数据源的绑定

private void Page_Load(object sender, System.EventArgs e){    //防止重复绑定    if (!IsPostBack)    {        //连接数据库,并从数据库中读取数据存入DataSet中        string connString = System.Configuration.ConfigurationManager. _                ConnectionStrings["connString"].ToString();        DataSet ds = new DataSet();        SqlDataAdapter ada = new SqlDataAdapter("SELECT * FROM Products", connString);        ada.Fill(ds);

        //以下是数据绑定需要的代码         this.DrListCompany.DataSource = ds;        this.DrListCompany.DataMember = "Table";        this.DrListCompany.DataTextField = "ProductName";        this.DrListCompany.DataValueField = "ProductID";        this.DrListCompany.DataBind();    }    }     

DataTextFiled和DataValueField两个属性值,两个属性分别绑定不同的字段,前者表示的是控件显示出的字段,后者表示控件代表的值。当使用类似:

Response.Write(this.DrListCompany.SelectedValue);

输出所选控件的值时,打印的是你DataValueField属性中绑定的字段 ProductID的值。

与DataReader数据源的绑定

SqlCommandcmd=newSqlCommand("SELECT SupplierID,CompanyNameFROMSuppliers",conn);conn.Open();SqlDataReaderreader=cmd.ExecuteReader();this.DrListCompany.DataSource=reader;this.DrListCompany.DataTextField="CompanyName";this.DrListCompany.DataValueField="SupplierID";this.DrListCompany.DataBind();//绑定完成后才能关闭DataReader对象和连接对象reader.Close();cmd.Connection.Close();

DataSet与DataReader的比较

DataSet DataReader
读或写数据 只读
包含多个来自不同数据库的表 使用 SQL 语句从单个数据库
非连接模式 连接模式
绑定到多个控件 只能绑定到一个控件
向前或向后浏览数据 只能向前
较慢的访问速度 较快的访问速度
使用数据源控件

数据源控件封装所有获取和处理数据的功能,主要包括连接数据源、使用Select、Update、Delete和Insert等对数据进行管理。

数据源控件包括SqlDataSource、AccessDataSource、ObjectDataSource、XmlDataSource、SiteMapDataSource。

数据绑定控件可以通过自身的DataSourceID属性,将数据源控件设置为它的数据源。

(关于如何创建数据源控件将不再介绍,请查阅相关资料。)

使用Eval方法绑定数据源

DataBinder.Eval方法,在运行时使用反射来分析和计算对象的数据绑定表达式。

包括两个重载:(请点击相应链接查看具体用法)

名称 说明
Eval(Object, String) 在运行时计算数据绑定表达式。
Eval(Object, String, String) 在运行时计算数据绑定表达式,并将结果的格式设置为字符串。

DataBinder.Eval示例:

<%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %>

(格式化字符串参数是可选的。如果忽略参数,DataBinder.Eval 返回对象类型的值。

显示二位小数

<%# DataBinder.Eval(Container.DataItem, "UnitPrice", "${0:F2}") %>

转换类型

((string)DataBinder.Eval(Container, "DataItem.P_SHIP_TIME_SBM8")).Substring(4,4)

{0:d} 日期只显示年月日

{0:yyyy-mm-dd} 按格式显示年月日

{0:c} 货币样式

<%#Container.DataItem("price","{0:¥#,##0.00}")%> <%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date","{0:yyyy-M-d}")%> 
时间: 2024-08-18 23:52:56

数据源绑定的相关文章

C#中数据源绑定DataSource以及相关控件(DataGridView)的使用总结

我们在编程过程中,会涉及到表格数据的显示,存储等,就可能涉及到DataGridView,DataSource, DataTable等概念. 下面我就我自己模糊的一些知识点串讲以下: 1)首先我要讲的是一些控件: Control: 控件基类,有一个DataBindings对象,它是一个ControlBindingCollection类,这个类继承与BindingsCollection,里面有一个Binding的列表对象,其中Binding对象时一个记录了属性名,数据源,数据成员等的对象.还有个Bi

GridView数据源绑定的一个小问题

在使用GridView绑定数据源的时候,遇到了一个问题,因为图简单,没有注意到,贴出错误截图: 找了半天没有找出错误,在网上找了之后,才发现是一个细节引起的错误. 后台是这样写的: 1 namespace rowcountdemo 2 { 3 public partial class WebForm1 : System.Web.UI.Page 4 { 5 protected void Page_Load(object sender, EventArgs e) 6 { 7 List<Student

WPF 将数据源绑定到TreeView控件出现界面卡死的情况

首先来谈一下实现将自定义的类TreeMode绑定到TreeView控件上的一个基本的思路,由于每一个节点都要包含很多自定义的一些属性信息,因此我们需要将该类TreeMode进行封装,TreeView的每一个节点的类型都是TreeMode,我们还定义一些Children属性,Parent属性用于定义当前节点的子节点和父节点,当然还定义了一些常见的Name.ToolTip.ID.IsExpand.IsChecked(主要是在每一个节点前面添加了一个CheckBox)等属性,另外的一些属性就是具体需要

Telerik XML 数据源绑定的问题

Telerik GridView 默认的 XElement 数据源的直接绑定,会导致内置的sort, filter ,group等功能无法使用. 原因在于Telerik GridView的那些功能是根据数据类型实现的,而XElement绑定在数据源本身是无法区分类型的. 一个解决方案是绑定的属性转换为具体的 一个个属性,也就是Telerik 官网所谓的various datasource当中XML的绑定方式 另外一个比较适合实际项目的解决方案是 讲数据源转变为Dynamic数据源,然后将Item

在Bootstrap开发框架中使用dataTable直接录入表格行数据(2)--- 控件数据源绑定

在前面随笔<在Bootstrap开发框架中使用dataTable直接录入表格行数据>中介绍了在Web页面中使用Jquery DataTable插件进行对数据直接录入操作,这种处理能够给用户提供较好的数据录入体验,本篇继续上篇的内容,继续介绍这个直接录入的处理操作,主要涉及到控件的初始化和数据源的绑定等操作内容,随着对这个处理的深入了解,我发现可以控制的内容也更加丰富,能够更好的实现各种所需的效果. 1.直接录入数据的界面分析 在之前介绍的数据直接录入处理的时候,界面效果如下所示. 上面的界面处

asp.net 中使用不同的数据源绑定gridview

第一种,使用SqlDataReader绑定gridview.代码如下: public SqlDataReader bind() { SqlConnection con = new SqlConnection(sqlcon); string sql = "SELECT * FROM test"; SqlCommand cmd = new SqlCommand(sql, con); con.Open(); SqlDataReader dr = cmd.ExecuteReader(Comma

TreeList 用含有树形结构的数据源绑定显示

目的很明确,直接贴代码(反射一个对象,将属性存入DataTable中绑定显示): public static DataTable CreateDataTabele( object obj) { DataTable dt = new DataTable(); DataColumn did = new DataColumn("ID", Type.GetType("System.Int32"));//ID DataColumn dParentID = new DataCo

List&lt;T&gt;做数据源绑定的问题

List<C_Pinpai> lc;// = new List<C_Pinpai>(); private void BindGrid() { //if (lc.Count > 0) // lc.Clear(); lc = new List<C_Pinpai>(); if (Xml_Data.CoreDS.Tables["Product"].Rows.Count > 0) { foreach (DataRow dr in Xml_Data.

datagrid数据源绑定winform和wpf的区别

SqlDataAdapter sda = new SqlDataAdapter(); sda.SelectCommand = cmd; DataSet ds = new DataSet(); sda.Fill(ds); DataGrid1.ItemsSource = ds.Tables[0];  (这是winform中的写法) -------------------------------------------------------------------------------------