手机版

ASP.NET如何操作数据表实例应用?

时间:2021-10-07 来源:互联网 编辑:宝哥软件园 浏览:

有机会在博客公园的博客频道看到一个问题,《ASP.NET怎么操作DataTable》:

如上所示,左边的表是由程序构建的,而不是数据库表。如何通过操作DataTable得到右边的四个表?Insus.NET尝试了一段时间,这被认为是在练习数据表的技巧。效果如下:

根据最初数据因苏斯。网在aspx .内放置了一个Gridview,用来显示最开始的数据。复制代码代码如下:视图代码ASP : GridView ID=' GridView 1 ' runat=' server ' autogenerateColumns=' false '列asp:模板字段标题模板名称/标题模板项目模板%#评估('名称')%/项目模板/asp:模板字段标题模板数量/标题模板项目模板%#评估('数量')%/项目模板/asp:模板创建一个数据表,并填充数据:复制代码代码如下:查看代码DataTable GetData(){ DataTable table=new DataTable();桌子。列。添加('名称,类型(字符串));桌子。列。添加('数量,类型为(int));桌子。行。添加(‘一’,1);桌子。行。添加(' a ',2);桌子。行。添加(' b ',2);桌子。行。添加(' b ',2);桌子。行。添加(' c ',1);桌子。行。添加(' c ',2);桌子。行。添加(' c ',3);桌子。行。添加(' c ',4);返回表;}然后为刚才创建的Gridview绑定这个数据表:复制代码代码如下:查看受代码保护的无效页面_加载(对象发送方,事件参数e) { if(!IsPostBack){ Data _ Binding();} }私有void Data_Binding() { this .GridView 1。数据源=GetData();这个GridView 1 .DataBind();}为了得到报表1,它有三个字段,名称(姓名),数量(金额)和行数(行数),因苏斯。网还参考源数据,它还有一个数量(数量)字段。因此因苏斯。网写了一个类别项目,为以下导出报表作准备:复制代码代码如下:项目使用系统;使用系统。集合。通用;使用系统Linq .使用系统Web///摘要///项目的摘要描述///摘要命名空间因苏。NET {公共类项目{私有字符串_名称私有整数数量私有int _ Amountprivate int _ RowCount公共字符串名称{ get { return _ Name}设置{ _Name=值;} }公共int Quantity { get { return _ Quantity;}设置{ _数量=值;} }公共整数{ get { return _ Amount}设置{ _金额=值;} } public int RowCount { get { return _ RowCount;}设置{ _RowCount=值;} } public Item() { ////TODO:在此添加构造函数逻辑//}公共项目(字符串名称,int数量){这个._名称=名称这个。_数量=数量;}公共项目(字符串名称、int金额、int行数){这个._名称=名称这个。_金额=金额;这个_行计数=行计数} } }好的,现在我们写一个报表,在aspx .放在一个按钮,以及一个GridView,来显示报表,注意一个字段的绑定。复制代码代码如下:视图代码ASP :按钮ID='ButtonReport1' runat='服务器文本='报表1 ' OnClick='按钮报表1 _ Click '/asp: GridView ID=' GridView 2 ' runat=' server ' autogenerateColumns=' false '列asp:模板字段标题模板名称/标题模板项目模板% # Eval('名称')%/项目模板/asp:模板字段标题模板金额/标题模板项目模板% # Eval('金额')%/项目模板/asp3在。铯写点击事件:复制代码代码如下:查看受代码保护的void ButtonReport1_Click(对象发送者,事件参数e) { SortedListstring,Item _sl=new SortedListstring,Item();DataTable otable=GetDATa();foreach (DataRow dr in otable .行){ if (_sl).包含密钥(博士[姓名]).ToString())) { _sl[dr['Name'].ToString()].金额=转换.至t32(dr['数量']);_sl[dr['Name'].ToString()].行数=1;}否则{项目i=新项目(dr['Name']).ToString(),转换.至t32(dr['数量']),1);_sl .添加(博士['姓名']。ToString(),I);} }这个. GridView2。数据源=_sl .价值观;这个GridView 2 .DataBind();}第一份报表,大功告成,只要数据表数源数据有变化,报表也会随之变化。接下来,完成第二个报表,在因苏。网使用中继器包含中继器来实现。

因此,前台超文本标记语言代码如下,其中第一个重发器内放置了一个HiddenField,来存储名称(姓名)字段,当作子中继器的参考传入。复制代码代码如下:视图代码ASP :按钮ID='ButtonReport2' runat='服务器文本='报表2 ' OnClick='按钮报表2 _ Click '/asp: repeater ID=' repeater 1 ' runat=' server ' ontimedata bound=' repeater 1 _ item data bound ' item template asp:隐藏字段ID='隐藏字段1 ' runat=' server ' Value=' % # Container .DataItem“% 1”/ASP 3360中继器ID=“中继器2”runat=“服务器”标头模板表边框='1 '单元格间距='0 '单元格填充='5 '样式=' margin: 10px "边框塌陷:塌陷" tr tdName/TD tdQuantity/TD/tr/页眉模板项目模板tr TD % # Eval(' Name ')%/TD TD TD TD % # Eval(' Quantity ')%/TD/tr/项目模板页脚模板/表格/页脚模板/asp3360中继器/项目模板/asp3360中继器首先,我们需要从数据表,获取名称(姓名)唯一的记录存储起来,作为第一个重发器控件的数据集数据源。复制代码代码如下:查看代码保护的void ButtonReport2_Click(对象发送者,事件参数{这个.重复1。数据源=名称();这个中继器1。DataBind();}列表字符串名称(){列表字符串t=新列表字符串();DataTable otable=GetDATa();foreach (DataRow dr in otable .row){ if(!包含(博士['姓名']。ToString())) t.Add(dr['Name'].ToString());}返回t;}我们还要写第二个中继器控件的数据源:复制代码代码如下:查看代码列表项GetDataByName(字符串名称){列表项o=新列表项();DataTable otable=GetDATa();foreach (DataRow dr in otable .行){ if (name==dr['Name'].ToString()){ 0项目i=新项目(博士['姓名'].ToString(),转换.至t32(dr['数量']);o。添加;} }返回o;}为第二个中继器控件绑定数据源,在绑写之前,得先找到这个控件,因此,你需要在第一个中继器控件写ontimedatabound=' repeater 1 _ itemddatabound '事件:复制代码代码如下:查看受代码保护的void Repeater1 _ ItemDataBound(对象发送方,repeateritemEventargs e){ if(e . item。项目类型==列表项目类型.项目| e .项目。项目类型==列表项目类型.交替项。查找控件(' hiddenfield 1 ')!=空项目。查找控件('中继器2 ')!=null){ var隐藏字段=e . item。查找控件(“隐藏字段1”)作为隐藏字段;var中继器=e . item。查找控件(“中继器2”)作为复读机;中继器数据源=GetDataByName(HiddenField .价值);中继器. DataBind();} } }

版权声明:ASP.NET如何操作数据表实例应用?是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。