知识大全 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的实例代码 以下文字资料是由(全榜网网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页面 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一简单实例
一个ASP.Net下的WebShell实例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一个ASP
这篇文章介绍了aspnet数据绑定的实例代码有需要的朋友可以参考一下 复制代码代码如下:cha138/Article/program/net/201311/14140
Asp.NetForms验证实例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 以前开发项目时经
ASP.NET中发送Email完整实例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本文举例说明
ASP.NET挪用淘宝API实例详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n