婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > ASP.NET怎么操作DataTable實例應用

ASP.NET怎么操作DataTable實例應用

熱門標簽:云南外呼電銷機器人系統 地圖標注多個行程 浙江外呼系統怎么安裝 山西防封卡電銷卡套餐 廈門商鋪地圖標注 陜西人工外呼系統哪家好 銅川小型外呼系統運營商 上海楊浦怎么申請申請400電話 海外地圖標注門市標
有機會在博客園的博問頻道上看到一個問題,《ASP.NET怎么操作DataTable》:


如上圖,左邊的這個表是程序構建出來的,不是數據庫表,怎么通過操作DataTable手段得到右邊的四個表?

Insus.NET嘗試做了一下,算是練習DataTable的功力了。效果如下:


根據最初數據,Insus.NET在.aspx內放置了一個Gridview,用來顯示最開始的數據。

復制代碼 代碼如下:

View Code


asp:GridView ID="GridView1" 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", 1);
table.Rows.Add("a", 2);
table.Rows.Add("b", 2);
table.Rows.Add("b", 2);
table.Rows.Add("c", 1);
table.Rows.Add("c", 2);
table.Rows.Add("c", 3);
table.Rows.Add("c", 4);
return table;
}

然后為剛才創建的Gridview綁定這個DataTable:
復制代碼 代碼如下:

View Code

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Data_Binding();
}
}

private void Data_Binding()
{
this.GridView1.DataSource = GetData();
this.GridView1.DataBind();
}

為了得到報表1,它有三個字段,名稱(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="ButtonReport1" runat="server" Text="報表1" OnClick="ButtonReport1_Click" />
asp:GridView ID="GridView2" 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 ButtonReport1_Click(object sender, EventArgs e)
{
SortedListstring, Item> _sl = new SortedListstring, Item>();

DataTable otable = GetData();
foreach (DataRow dr in otable.Rows)
{
if (_sl.ContainsKey(dr["Name"].ToString()))
{
_sl[dr["Name"].ToString()].Amount += Convert.ToInt32(dr["Quantity"]);
_sl[dr["Name"].ToString()].RowCount += 1;
}
else
{
Item i = new Item(dr["Name"].ToString(), Convert.ToInt32(dr["Quantity"]), 1);
_sl.Add(dr["Name"].ToString(), i);
}
}

this.GridView2.DataSource = _sl.Values;
this.GridView2.DataBind();
}

第一份報表,大功告成,只要DataTable數源數據有變化,報表也會隨之變化。

接下來,完成第二個報表,在Insus.NET使用Repeater包含Repeater來實現。因此,前臺Html代碼如下,其中第一個Repeate內放置了一個HiddenField,來存儲名稱(Name)字段,當作子Repeater的參考傳入。
復制代碼 代碼如下:

View Code


asp:Button ID="ButtonReport2" runat="server" Text="報表2" OnClick="ButtonReport2_Click" />
asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
ItemTemplate>
asp:HiddenField ID="HiddenField1" runat="server" Value='%# Container.DataItem %>' />
asp:Repeater ID="Repeater2" runat="server">
HeaderTemplate>
table border="1" cellspacing="0" cellpadding="5" style="margin: 10px; 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 ButtonReport2_Click(object sender, EventArgs e)
{
this.Repeater1.DataSource = Names();
this.Repeater1.DataBind();
}

Liststring> Names()
{
Liststring> t = new Liststring>();
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


ListItem> GetDataByName(string name)
{
ListItem> o = new ListItem>();
DataTable otable = GetData();
foreach (DataRow dr in otable.Rows)
{
if (name == dr["Name"].ToString())
{
Item i = new Item(dr["Name"].ToString(), Convert.ToInt32(dr["Quantity"]));
o.Add(i);
}
}
return o;
}

為第二個Repeater控件綁定數據源,在綁寫之前,得先找到這個控件,因此,你需要在第一個Repeater控件寫OnItemDataBound="Repeater1_ItemDataBound"事件:
復制代碼 代碼如下:

View Code


protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
if (e.Item.FindControl("HiddenField1") != null e.Item.FindControl("Repeater2") != null)
{
var hiddenField = e.Item.FindControl("HiddenField1") as HiddenField;
var repeater = e.Item.FindControl("Repeater2") as Repeater;
repeater.DataSource = GetDataByName(hiddenField.Value);
repeater.DataBind();
}
}
}
您可能感興趣的文章:
  • asp.net實現導出DataTable數據到Word或者Excel的方法
  • asp.net實現數據從DataTable導入到Excel文件并創建表的方法
  • Asp.net中DataTable導出到Excel的方法介紹
  • asp.net 讀取Excel數據到DataTable的代碼
  • ASP.NET DataTable去掉重復行的2種方法
  • ASP.NET中DataTable與DataSet之間的轉換示例
  • Asp.net下使用Jquery Ajax傳送和接收DataTable的代碼
  • asp.net 數據庫的連接和datatable類
  • Asp.net靜態方法之Grid轉DataTable方法實現步驟
  • Asp.net實現選擇性的保留DataTable中的列
  • asp.net DataTable導出Excel自定義列名的方法

標簽:萊蕪 信陽 朔州 自貢 許昌 常州 西雙版納 孝感

巨人網絡通訊聲明:本文標題《ASP.NET怎么操作DataTable實例應用》,本文關鍵詞  ASP.NET,怎么,操作,DataTable,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ASP.NET怎么操作DataTable實例應用》相關的同類信息!
  • 本頁收集關于ASP.NET怎么操作DataTable實例應用的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美α欧美αv大片| 午夜欧美在线一二页| 亚洲视频在线一区观看| 一区二区三区中文字幕电影| 欧美精品在欧美一区二区少妇| 1000精品久久久久久久久| 欧美三级蜜桃2在线观看| 狠狠色丁香九九婷婷综合五月| 国产免费久久精品| 一本色道久久综合亚洲91| 亚洲国产精品自拍| 国产精品私房写真福利视频| 欧美日韩精品一二三区| 亚洲电影激情视频网站| 久久久国产精品不卡| 成人一区二区三区视频| 亚洲综合男人的天堂| 欧美成人猛片aaaaaaa| 成人高清在线视频| 精品少妇一区二区三区免费观看| 成人精品视频.| 日韩美女久久久| 日韩欧美成人一区| 欧美中文字幕一区二区三区| 99久久国产综合精品色伊| 日韩美一区二区三区| 亚洲大片精品永久免费| 911国产精品| 制服视频三区第一页精品| 亚洲乱码国产乱码精品精98午夜| 972aa.com艺术欧美| 国产精品免费av| 高清不卡一区二区在线| 国产精品三级av| 风间由美中文字幕在线看视频国产欧美| 欧美精品1区2区| 亚洲超碰97人人做人人爱| 日本高清不卡一区| 亚洲精品乱码久久久久久黑人 | 亚洲一区二区精品久久av| 国产成人a级片| 欧美tk—视频vk| 欧美一区二区三区公司| 91啦中文在线观看| 风间由美一区二区av101 | 婷婷综合在线观看| 中文字幕制服丝袜一区二区三区 | 亚洲777理论| 不卡av在线免费观看| 91香蕉视频污在线| 国产欧美一区二区精品秋霞影院| 亚洲国产成人高清精品| 欧美亚洲动漫制服丝袜| 一区二区三区日韩欧美精品| 丁香婷婷综合五月| 久久青草国产手机看片福利盒子 | 日本精品一区二区三区四区的功能| 成人av午夜影院| 欧美在线视频全部完| 亚洲日韩欧美一区二区在线| 91.com在线观看| 麻豆一区二区在线| 中文字幕一区av| 日本乱码高清不卡字幕| 国产剧情一区二区三区| 国产精品成人午夜| 在线亚洲高清视频| 国产精品91xxx| 国产精品初高中害羞小美女文| 日韩欧美一区二区久久婷婷| 国产一区不卡精品| 天堂av在线一区| 久久久蜜桃精品| 91麻豆国产香蕉久久精品| 国产乱码精品一品二品| 亚洲欧美另类小说视频| 久久精品夜色噜噜亚洲a∨| 91首页免费视频| 国产福利一区二区三区视频| 亚洲福利一区二区三区| 在线中文字幕一区二区| 成人黄色免费短视频| 亚洲在线成人精品| 中文一区二区完整视频在线观看| 91麻豆视频网站| 成人综合激情网| 日本亚洲电影天堂| 亚洲国产va精品久久久不卡综合| 久久久亚洲精品一区二区三区 | 欧美激情一区二区三区不卡| 色综合久久88色综合天天6| 国产高清久久久| 日韩精品欧美精品| 亚州成人在线电影| 中文av一区特黄| 91精品国产福利在线观看| 色综合天天狠狠| 日韩色在线观看| 亚洲女同女同女同女同女同69| 欧美刺激脚交jootjob| 日韩欧美国产一区二区在线播放| |精品福利一区二区三区| 日本一区二区三区高清不卡| 国产精品不卡一区| 亚洲色图丝袜美腿| 性欧美大战久久久久久久久| 日韩高清中文字幕一区| 免费成人av资源网| 国产在线国偷精品产拍免费yy| 粉嫩aⅴ一区二区三区四区| 成人激情小说网站| 在线观看亚洲精品| 欧美一区二区人人喊爽| 欧美激情中文字幕一区二区| 亚洲一区在线视频| 久久97超碰色| 色综合天天性综合| 91麻豆精品国产91久久久久久久久| 99久精品国产| 欧美大度的电影原声| 欧美国产日韩精品免费观看| 五月婷婷色综合| 成人开心网精品视频| 国产一区二区三区黄视频| 色婷婷精品久久二区二区蜜臀av | 91色婷婷久久久久合中文| 精品视频全国免费看| 精品国产91久久久久久久妲己| 中文字幕亚洲不卡| 另类欧美日韩国产在线| 91精品国产欧美一区二区成人| 亚洲欧美在线高清| 国产二区国产一区在线观看| 91精品国产综合久久小美女| 亚洲视频免费观看| 国产成人综合视频| 粉嫩一区二区三区在线看| 日韩欧美久久一区| 婷婷综合在线观看| 在线免费观看视频一区| 亚洲视频在线一区观看| 成人免费视频app| 久久久美女毛片| 国产欧美日韩卡一| 国产成人综合在线观看| 欧美va在线播放| 久久精品噜噜噜成人av农村| 欧美久久婷婷综合色| 亚洲成人www| 欧美亚一区二区| 成人综合婷婷国产精品久久 | 老司机午夜精品| 美女一区二区三区| 欧美日韩精品一二三区| 天天做天天摸天天爽国产一区| 欧美午夜在线一二页| 亚洲成av人片在线| 国产成人精品综合在线观看 | 亚洲精品国产第一综合99久久| 激情综合五月婷婷| 国产蜜臀97一区二区三区| 国产成人精品综合在线观看| 国产日韩欧美高清在线| 日本久久一区二区| 日韩电影在线一区二区三区| 久久青草欧美一区二区三区| av激情亚洲男人天堂| 午夜精品久久久久久久久| 一本大道久久a久久精品综合| 欧美精品xxxxbbbb| 精品国产一区久久| 亚洲国产精品久久人人爱| 久久se精品一区精品二区| 欧美日韩电影一区| 伊人一区二区三区| 99久久精品情趣| 国产成人av电影在线播放| 天堂午夜影视日韩欧美一区二区| 久久久精品国产99久久精品芒果| 欧美日韩综合一区| 色偷偷88欧美精品久久久| 国产精品亚洲成人| 麻豆91小视频| 蜜臀av性久久久久蜜臀aⅴ流畅| 一区二区三区久久久| 亚洲美女视频一区| 国产精品久久夜| 欧美激情艳妇裸体舞| 国产美女主播视频一区| 东方欧美亚洲色图在线| 国产精品免费丝袜| jlzzjlzz国产精品久久| 在线不卡一区二区| 粉嫩嫩av羞羞动漫久久久| 亚洲18色成人| 一区二区三区中文字幕| 亚洲精品一区二区三区蜜桃下载| 欧美私人免费视频| 日韩你懂的在线观看| 国产日韩欧美精品电影三级在线|