知识大全 ASP.NET怎么操作DataTable实例应用

Posted

篇首语:聪明在于勤奋,天才在于积累。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET怎么操作DataTable实例应用相关的知识,希望对你有一定的参考价值。

ASP.NET怎么操作DataTable实例应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

有机会在博客园的博问频道上看到一个问题 《ASP NET怎么操作DataTable》 如上图 左边的这个表是程序构建出来的 不是数据库表 怎么通过操作DataTable手段得到右边的四个表? Insus NET尝试做了一下 算是练习DataTable的功力了 效果如下 根据最初数据 Insus NET在 aspx内放置了一个Gridview 用来显示最开始的数据

  复制代码 代码如下:

  View Code <asp:GridView ID= GridView runat= server AutoGenerateColumns= false > <Columns> <asp:TemplateField> <HeaderTemplate> Name </HeaderTemplate> <ItemTemplate> <%# Eval( Name ) %> </ItemTemplate> </asp:TemplateField> <asp:TemplateField> <HeaderTemplate> Quantity </HeaderTemplate> <ItemTemplate> <%# Eval( Quantity ) %> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>

创建一个DataTable 并填充数据

  复制代码 代码如下:

  View Code DataTable GetData() DataTable table = new DataTable(); table Columns Add( Name typeof(string)); table Columns Add( Quantity typeof(int)); table Rows Add( a ); table Rows Add( a ); table Rows Add( b ); table Rows Add( b ); table Rows Add( c ); table Rows Add( c ); table Rows Add( c ); table Rows Add( c ); return table;

然后为刚才创建的Gridview绑定这个DataTable:

  复制代码 代码如下:

  View Code protected void Page_Load(object sender EventArgs e) if (!IsPostBack) Data_Binding(); private void Data_Binding() this GridView DataSource = GetData(); this GridView DataBind();

为了得到报表 它有三个字段 名称(Name) 数量(Amount)和行数(Rowcount) Insus NET还参考源数据 它还有一个数量(Quantity)字段 因此 Insus NET写了一个类别Item 为以下导出报表作准备

  复制代码 代码如下:

  Item using System; using System Collections Generic; using System Linq; using System Web; /// <summary> /// Summary description for Item /// </summary> namespace Insus NET public class Item private string _Name; private int _Quantity; private int _Amount; private int _RowCount; public string Name get return _Name; set _Name = value; public int Quantity get return _Quantity; set _Quantity = value; public int Amount get return _Amount; set _Amount = value; public int RowCount get return _RowCount; set _RowCount = value; public Item() // // TODO: Add constructor logic here // public Item(string name int quantity) this _Name = name; this _Quantity = quantity; public Item(string name int amount int rowCount) this _Name = name; this _Amount = amount; this _RowCount = rowCount;

OK 现在我们写一个报表 在 aspx放在一个按钮 以及一个GridView 来显示报表 注意一个字段的绑定

  复制代码 代码如下:

  View Code <asp:Button ID= ButtonReport runat= server Text= 报表 OnClick= ButtonReport _Click /> <asp:GridView ID= GridView runat= server AutoGenerateColumns= false > <Columns> <asp:TemplateField> <HeaderTemplate> Name </HeaderTemplate> <ItemTemplate> <%# Eval( Name ) %> </ItemTemplate> </asp:TemplateField> <asp:TemplateField> <HeaderTemplate> Amount </HeaderTemplate> <ItemTemplate> <%# Eval( Amount ) %> </ItemTemplate> </asp:TemplateField> <asp:TemplateField> <HeaderTemplate> RowCount </HeaderTemplate> <ItemTemplate> <%# Eval( RowCount ) %> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>

在 cs 写click事件

  复制代码 代码如下:

  View Code protected void ButtonReport _Click(object sender EventArgs e) SortedList<string Item> _sl = new SortedList<string Item>(); DataTable otable = GetData(); foreach (DataRow dr in otable Rows) if (_sl ContainsKey(dr[ Name ] ToString())) _sl[dr[ Name ] ToString()] Amount += Convert ToInt (dr[ Quantity ]); _sl[dr[ Name ] ToString()] RowCount += ; else Item i = new Item(dr[ Name ] ToString() Convert ToInt (dr[ Quantity ]) ); _sl Add(dr[ Name ] ToString() i); this GridView DataSource = _sl Values; this GridView DataBind();

第一份报表 大功告成 只要DataTable数源数据有变化 报表也会随之变化 接下来 完成第二个报表 在Insus NET使用Repeater包含Repeater来实现 因此 前台Html代码如下 其中第一个Repeate内放置了一个HiddenField 来存储名称(Name)字段 当作子Repeater的参考传入

  复制代码 代码如下:

  View Code <asp:Button ID= ButtonReport runat= server Text= 报表 OnClick= ButtonReport _Click /> <asp:Repeater ID= Repeater runat= server OnItemDataBound= Repeater _ItemDataBound > <ItemTemplate> <asp:HiddenField ID= HiddenField runat= server Value= <%# Container DataItem %> /> <asp:Repeater ID= Repeater runat= server > <HeaderTemplate> <table border= cellspacing= cellpadding= style= margin: px; border collapse: collapse; > <tr> <td>Name</td> <td>Quantity</td> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%# Eval( Name ) %></td> <td><%# Eval( Quantity ) %></td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </ItemTemplate> </asp:Repeater>

首先 我们需要从DataTable 获取名称(Name)唯一的记录存储起来 作为第一个Repeate控件的数据集数据源

  复制代码 代码如下:

  View Code protected void ButtonReport _Click(object sender EventArgs e) this Repeater DataSource = Names(); this Repeater DataBind(); List<string> Names() List<string> t = new List<string>(); DataTable otable = GetData(); foreach (DataRow dr in otable Rows) if (!t Contains(dr[ Name ] ToString())) t Add(dr[ Name ] ToString()); return t;

我们还要写第二个Repeater控件的数据源

  复制代码 代码如下:

  View Code List<Item> GetDataByName(string name) List<Item> o = new List<Item>(); DataTable otable = GetData(); foreach (DataRow dr in otable Rows) if (name == dr[ Name ] ToString()) Item i = new Item(dr[ Name ] ToString() Convert ToInt (dr[ Quantity ])); o Add(i); return o;

为第二个Repeater控件绑定数据源 在绑写之前 得先找到这个控件 因此 你需要在第一个Repeater控件写OnItemDataBound= Repeater _ItemDataBound 事件

  复制代码 代码如下:

cha138/Article/program/ASP/201405/30980

相关参考

知识大全 Asp.Net用OWC操作Excel的实例代码

Asp.Net用OWC操作Excel的实例代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!这篇文

知识大全 asp.net导入excel转为datatable

  前台代码  <asp:FileUploadrunat=serverID=fupFilesWidth=px/>excel表名<asp:TextBoxID=txtSheetrunat

知识大全 ASP.NET 2.0中DataTable小兵变大将

ASP.NET2.0中DataTable小兵变大将  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 ASP.NET中DataTable与DataSet之间的转换

ASP.NET中DataTable与DataSet之间的转换  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 ASP.NET用户控件操作ASPX页面

ASP.NET用户控件操作ASPX页面  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一简单实例

知识大全 一个ASP.Net下的WebShell实例

一个ASP.Net下的WebShell实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一个ASP

知识大全 asp.net 数据绑定的实例代码

这篇文章介绍了aspnet数据绑定的实例代码有需要的朋友可以参考一下 复制代码代码如下:cha138/Article/program/net/201311/14140

知识大全 Asp.Net Forms验证实例

Asp.NetForms验证实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以前开发项目时经

知识大全 ASP.NET中发送Email完整实例

ASP.NET中发送Email完整实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本文举例说明

知识大全 ASP.NET挪用淘宝API实例详解

ASP.NET挪用淘宝API实例详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n