C#数据绑定控件中的DataSource属性浅谈

有的时候,你在编程进入一定阶段,进一步提升很困难的境况之下,不妨回过头来看看基础的东西,或许你会有新的受益,或许能够真正的体会到孔夫子所谓的“温故而知新”的真正内涵。
常用的C#数据绑定控件有:Repeater、DataList、GridView、DetailsView等,在这里我拿Repeater来简单说明问题。
使用该属性指定用来填充Repeater控件的数据源。DataSource可以是任何System.Collections.IEnumerable对象,
如用于访问数据库的System.Data.DataView、System.Collections.ArrayList、System.Collections.Hashtable、数组或IListSource对象。
常用的数据源:
一个DataTable
一个DataView
一个DataSet
任何实现IListSource接口的组件
任何实现IList接口的组件
注意:
若要绑定到对象的强类型数组,该对象类型必须包含公共属性。
下面通过几个简单的实例来介绍DataSource的具体应用。
<1>绑定DataTable,一般都是从数据库取出数据,然后直接进行绑定,具体的数据库操作的逻辑不再提供。想必大家都已经非常熟悉。绑定DataView与这个类似。
程序代码

代码如下:

privatevoidBindData() 

//通过业务逻辑,直接调用数据库中的数据 
DataTablenTable=getTable();

Repeater1.DataSource=nTable; 
Repeater1.DataBind(); 
}

HTML代码
C#数据绑定控件程序代码


代码如下:

<asp:RepeaterIDasp:RepeaterID="Repeater1"runat="server">
<HeaderTemplate>
<table>
<tr>
<thscopethscope="col">
姓名th>
<th>
年龄th>
<tr>
<HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%#Eval("Key")%>
<td>
<td>
<%#Eval("value")%>
<td>
<tr>
<ItemTemplate>
<FooterTemplate>
<table><FooterTemplate>
<asp:Repeater>

<2>绑定Array、ArrayList、List、一维数组之类,里面存储简单的数据。
ArrayList
C#数据绑定控件程序代码


代码如下:

privatevoidBindData() 

ArrayListlist=newArrayList(); 
list.Add("Jim"); 
list.Add("Tom"); 
list.Add("Bluce"); 
list.Add("Mary");

Repeater1.DataSource=list; 
Repeater1.DataBind(); 
}

HTML适当改变
程序代码


代码如下:

<asp:RepeaterIDasp:RepeaterID="Repeater1"runat="server">
<HeaderTemplate><table><tr><thscopethscope="col">姓名<th><tr><HeaderTemplate>
<ItemTemplate><tr><td><%#Container.DataItem%><td><tr><ItemTemplate>
<FooterTemplate><table><FooterTemplate>
<asp:Repeater>

<3>绑定Dictionary、HashTable
Dictionary
C#数据绑定控件程序代码


代码如下:

privatevoidBindData() 

Dictionary<string,int>dic=newDictionary<string,int>(); 
dic.Add("Jim",21); 
dic.Add("Tom",26); 
dic.Add("Bluce",33); 
dic.Add("Mary",18);

Repeater1.DataSource=dic; 
Repeater1.DataBind(); 
}

HTML代码
程序代码


代码如下:

<asp:RepeaterIDasp:RepeaterID="Repeater1"runat="server">
<HeaderTemplate><table><tr><thscopethscope="col">姓名<th><th>年龄<th><tr><HeaderTemplate>
<ItemTemplate><tr><td><%#Eval("Key")%>td><td><%#Eval("value")%><td><tr><ItemTemplate>
<FooterTemplate><table><FooterTemplate>
<asp:Repeater>

<4>绑定对象集合,IList等。这个很是有用,在我们进行数据查询的时候,经常从数据库取出数据,为了方便操作,需要封装成对象,但是有的时候需要将这些对象以列表的形式显示出来,一种解决方案:对象转换为DataTable,另一种就是直接调用数据库。这两种方案,并不是很理想。而这里直接将对象集合直接绑定到数据显示控件,给我指明一条出路。其实,在PetShop4.0就是利用这一点,绑定ICollection或者IList。简单明了。
一个简单的用户类,包含两个公共属性。
程序代码


代码如下:

usingSystem; 
usingSystem.Data;

///

///SummarydescriptionforUser 
///

publicclassUser 

privatestring_Name; 
publicstringName 

get{return_Name;} 
set{_Name=value;} 

privateint_Age; 
publicintAge 

get{return_Age;} 
set{_Age=value;} 

publicUser() 

// 
//TODO:Addconstructorlogichere 
// 

publicUser(stringname,intage) 

_Name=name; 
_Age=age; 

}

绑定对象集合:
IList
程序代码


代码如下:

privatevoidBindData() 

Useruser1=newUser("Jim",21); 
Useruser2=newUser("Tom",23); 
Useruser3=newUser("Bluce",33); 
Useruser4=newUser("Mary",18);

IList<User>list=newList<User>(); 
list.Add(user1); 
list.Add(user2); 
list.Add(user3); 
list.Add(user4);

Repeater1.DataSource=list; 
Repeater1.DataBind(); 
}

对应的Repeater绑定对象的公共属性:
C#数据绑定控件程序代码


代码如下:

<asp:RepeaterIDasp:RepeaterID="Repeater1"runat="server">
<HeaderTemplate>
<table>
<tr>
<thscopethscope="col">
姓名th>
<th>
年龄<th>
<tr>
<HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%#Eval("Name")%>
<td>
<td>
<%#Eval("Age")%>
<td>
<tr>
<ItemTemplate>
<FooterTemplate>
<table><FooterTemplate>
<asp:Repeater>

(0)

相关推荐

  • c#中datagridview处理非绑定列的方法

    本文实例讲述了c#中datagridview处理非绑定列的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using datagridview1.DataSet1Tabl

  • C#实现绑定DataGridView与TextBox之间关联的方法

    本文实例讲述了C#实现绑定DataGridView与TextBox之间关联的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace System.Window

  • c#数据绑定之将datatabel的data添加listView

    功能:通过响应UI Textbox 的值向ListView 绑定新添加的纪录. UI XAML 代码 复制代码 代码如下: <Grid Margin="5">            <Grid.ColumnDefinitions>                <ColumnDefinition Width="Auto"/>                <ColumnDefinition/>            &

  • c#数据绑定之删除datatable数据示例

    c#数据绑定之将datatabel的data添加listView中,简要的通过代码应用了DataTable,DataTableColumns,DataTableRow类,通过UI界面的Textbox向DataTable中添加数据然后响应到ListView控件中.在本实例中主要针对如何删除DataTable的纪录,并同步到ListView中. 首先,对UI做一些改动,最终界面如下图所示.主要是在ListView 中添加了CheckBox控件. 在ListView中添加CheckBox 的XAML

  • C#中DataBindings用法实例分析

    本文实例讲述了C#中DataBindings用法.分享给大家供大家参考,具体如下: 在C#操作数据库过程中,针对一般的文本控件,比如TextBox,Label等,我们赋值直接使用类似TextBox.Text=****的方式来进行,这种方式从某种意义上来说的确是最简便的方式,但是对于复杂一些的空间,比如说DataGridView,这个时候,绑定数据源我们一般使用DataGridView1.DataSource=****的方式来进行,如果数据源稍微有更改,那么只需要重新调用绑定一遍即可.可以说这种方

  • C#数据绑定(DataBinding)简单实现方法

    本文实例讲述了C#数据绑定(DataBinding)简单实现方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Ap

  • c# 如何将RadioButton与DataTable数据进行绑定

    Control类有一个公共的属性是DataBindings,它可以将控件的属性与其他的数据绑定在一起.我接触到的有将两个控件的数据绑定.将控件的属性与DataTable绑定.以下说说在将DataTable与RadioButton绑定的过程中出现的问题. 界面上有两个RadioButton,rdoA和rdoB,以及一个显示dt数据的Button:后台定义一个私有变量DataTable dt.界面初始化完成后,将rdo与dt的值绑定起来. 复制代码 代码如下: DataTable dt = null

  • C# Datagridview绑定List方法代码

    本文实例讲述了c# DatagridView绑定List的方法,分享给大家供大家参考.具体方法如下: 主要代码如下: IList<Person> lists; public Form2() { InitializeComponent(); lists = new BindingList<Person>(); lists.Add(new Person(2)); this.dataGridView1.DataSource = lists; } 希望本文所述对大家的C#程序设计有所帮助.

  • C#数据绑定控件中的DataSource属性浅谈

    有的时候,你在编程进入一定阶段,进一步提升很困难的境况之下,不妨回过头来看看基础的东西,或许你会有新的受益,或许能够真正的体会到孔夫子所谓的"温故而知新"的真正内涵.常用的C#数据绑定控件有:Repeater.DataList.GridView.DetailsView等,在这里我拿Repeater来简单说明问题.使用该属性指定用来填充Repeater控件的数据源.DataSource可以是任何System.Collections.IEnumerable对象,如用于访问数据库的Syste

  • 分析10个ASP.NET控件最有用的属性详解

    1.ClientIDMode 渲染ASP.NET控件时会自动生成一个ID,当我们在客户端脚本中引用它们时,却会制造不少麻烦,虽然它是命名容器和ID的简单串联,但仍然无法预测生成的ID范围. ASP.NET 4.0使用ClientIDMode属性解决了这个问题,它允许你控制生成这些ID的方法,ClientIDMode有四个可选择的值:AutoID,Static,Predictable和Inherit.下面是这四个值的含义解释: AutoID – 和4.0以前的版本保持一致,自动生成ID. Stat

  • JS获取页面input控件中所有text控件并追加样式属性

    如题,将使用jquery来在页面加载时获取页面input控件中所有text控件并添加样式. 以前写过的页面上所使用的text控件width属性太小需要改动,改动牵扯页面上所有text的属性,改动每个控件的width感觉会很麻烦,所以就想通过在页面加载的时候将要改动的text找到并添加属性. 首先先写了一个css样式: 复制代码 代码如下: .wid { width:205px; } 在页面加载中所写的代码如下: $("input[type=text]").addClass("

  • 如何在DataGrid控件中实现自定义分页

    如何在DataGrid控件中实现自定义分页      在一般情况下,DataGrid控件每次实现翻页操作时,都会将数据源中的数据重新调用一次,当数据中 数据很多时,这样做就会很浪费系统资源和降低程序的执行效率.这时候我们一般通过自定义分页来解 决这个问题.     DataGrid控件的AllowCustomPaging属性用来获取或设置DataGrid控件是否允许自定义分 页;VirtualItemCoun属性用来获取或设置在使用自定义分页时DataGrid中实际的项数.要实现自定义分 页,必

  • 在ASP.NET 2.0中操作数据之十二:在GridView控件中使用TemplateField

    导言 GridView是由一组字段(Field)组成的,它们都指定的了来自DataSource中的什么属性需要用到自己的输出呈现中.最简单的字段类型是BoundField,它仅将数据简单的显示为文本.其他的字段类型使用交互HTML元素(alternate HTML elements)来显示数据.比如说,CheckBoxField将被呈现为一个CheckBox,其选中状态由某特定数据字段的值来决定:ImageField则将某特定数据字段呈现为一个图片,当然,这个数据字段中应该放的是图片类型的数据.

  • 浅谈ASP.NET常用数据绑定控件优劣总结

    本文的初衷在于对Asp.net常用数据绑定控件进行一个概览性的总结,主要分析各种数据绑定控件各自的优缺点,以便在实际的开发中选用合适的控件进行数据绑定,以提高开发效率. 因为这些数据绑定控件大部分都已经封装的很好了,稍微有一些基础的朋友都可以很容易的上手使用,所以本文不涉及具体控件的使用,只在于分析各自的优劣点,但是在下一篇文章里,我会主要讲一下ListBox.GridView.Repeater这三个数据绑定控件的"高效分页",ListBox和GridView内置的有分页,但是其效率太

  • ASP.NET数据绑定控件详解

    ListBox.GridView.Repeater这三个数据绑定控件的"高效分页",ListBox和GridView内置的有分页,但是其效率太低了,少量的数据还可以,大量的数据根本就没法用,Repeater控件本身不提供分页,但是在实际的开发中可能也会有用到分页,所以也会给大家讲一下,Repeater的分页. 好了,现在开始进入正题,先从比较常用的控件说起. 一.GridView控件 主要特点:支持删.改,排序.分页.外观设置.自定义显示数据 缺 点:影响程序性能.不支持插入操作 这个

  • 在ASP.NET 2.0中操作数据之十三:在DetailsView控件中使用TemplateField

    导言 比起BoundField.CheckBoxField.HyperLinkField以及其他的那些数据字段控件(data field controls)来说,TemplateField提供了一种高度复杂的数据呈现的方法.在上一节中,我们主要着重于在GridVIew中使用TemplateField,以实现: ·在一列中显示多个数据字段.比如说,将FirstName和LastName字段合并起来显示在一个GridView列中. ·使用交互Web控件来展示数据.我们看到了如何使用一个Calenda

  • Android开发技巧之在a标签或TextView控件中单击链接弹出Activity(自定义动作)

    在5.2.1节和5.2.2节介绍了<a>标签以及TextView自动识别的特殊文本(网址.电话号.Email等),这些都可以通过单击来触发不同的动作.虽然这些单击动作已经可以满足大多数需要了,但如果读者想在单击链接时执行任意自定义的动作,那么本节的内容非看不可. 现在让我们使用5.2.1节介绍的方法重新查看Html.java文件的内容,随便找一个处理Html标签的方法,例 如,endA方法.该方法用于处理</a>标签.我们会发现在该方法中如下的语句. text.setSpan(ne

  • c#打印预览控件中实现用鼠标移动页面功能代码分享

    该功能本来可以通过拉动水平和垂直滚动条来实现,但实际使用中,用户更趋向于直接用鼠标拖动页面来实现,很多看图类软件都有这种类似的功能.而.net的打印预览控件却很遗憾的没有提供这一功能,只来自己想办法来实现啦. 我的办法就是用代码来控制打印预览控件中的水平来垂直滚动条的位置,间接实现和用鼠标直接拖动滚动条一样的效果. 在实现这一功能的过程中,最大的困难是打印预览控件并没有让程序员直接调用的关于滚动条的方法或属性.所以只好向WinAPI求助了. 以下API函数和常量就是实现上述功能的关键了: 复制代

随机推荐