亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

[C#] DataView用法

2019-11-17 04:01:29
字體:
來源:轉載
供稿:網友
在實際編程工程中,常常遇到這樣的情況:DataTable并不是數據庫中的,或者DataTable尚未寫到數據庫,或者從數據庫中讀出的DataTable已經在本地被改動,又沒有寫回數據庫(可能還要作其他改動),在這些情況下,要查詢DataTable中的數據,強大的SQL語言就派不上用場了。
   
   有些.NET程序員采取在數據庫中建立臨時表等方法來解決這類查詢問題。而我覺得這種方法不可行,其實只要用.NET類庫中提供的DataView類的強大功能(主要是用它的RowFilter屬性),就能方便地解決這類查詢問題。下面就舉一個具體的例子,來說明如何不用SQL語句,用DataView的RowFilter屬性來查詢。
   
   步驟一:建立一個C#的asp.net項目。先編寫一個生成DataTable的函數MakeDataTable(),代碼如下:
   
    PRivate DataTable MakeTable()
   
    {
   
    //生成DataTable
   
    System.Data.DataTable myDataTable = new DataTable("本地數據表");
   
    DataColumn myDataColumn;
   
    DataRow myDataRow;
   
    //生成數據列 ID,商品名稱,商品價格
   
    myDataColumn = new DataColumn();
   
    myDataColumn.DataType = System.Type.GetType("System.Int32");
   
    myDataColumn.ColumnName = "ID";
   
    myDataColumn.ReadOnly = true;
   
    myDataColumn.Unique = true;
   
    myDataTable.Columns.Add(myDataColumn);
   
   
   
    myDataColumn = new DataColumn();
   
    myDataColumn.DataType = System.Type.GetType("System.String");
   
    myDataColumn.ColumnName = "商品名稱";
   
    myDataTable.Columns.Add(myDataColumn);
   
   
   
    myDataColumn = new DataColumn();
   
    myDataColumn.DataType =System.Type.GetType("System.Decimal");
   
    myDataColumn.ColumnName = "商品價格";
   
    myDataTable.Columns.Add(myDataColumn);
   
   
   
    //為數據表添加數據行
   
    myDataRow = myDataTable.NewRow();
   
    myDataRow["id"] = 1;
   
    myDataRow["商品名稱"] = "足球";
   
    myDataRow["商品價格"] =57.5;
   
    myDataTable.Rows.Add(myDataRow);
   
   
   
    myDataRow = myDataTable.NewRow();
   
    myDataRow["id"] = 2;
   
    myDataRow["商品名稱"] = "籃球";
   
    myDataRow["商品價格"] =64.5;
   
    myDataTable.Rows.Add(myDataRow);
   
   
   
    myDataRow = myDataTable.NewRow();
   
    myDataRow["id"] = 3;
   
    myDataRow["商品名稱"] = "網球";
   
    myDataRow["商品價格"] =6.5;
   
    myDataTable.Rows.Add(myDataRow);
   
   
   
    myDataRow = myDataTable.NewRow();
   
    myDataRow["id"] = 4;
   
    myDataRow["商品名稱"] = "網球拍";
   
    myDataRow["商品價格"] =388.5;
   
    myDataTable.Rows.Add(myDataRow);
   
   
   
    //返回數據表
   
    return myDataTable;
   
    }
   
   
   
   
   
   步驟二:在aspx前臺頁面中添加一個DataGrid1,在后臺代碼的Page_Load中編寫如下代碼:
   
   if(!this.IsPostBack)
   
    {
   
    session["Table"]=MakeTable();
   
    DataGrid1.DataSource=(DataTable)Session["Table"];
   
    DataGrid1.DataBind();
   
    }
   
   
   
   此時瀏覽頁面,可以看到DataGrid中顯示的表中數據。
   
   ID
   
   
   商品名稱
   
   
   商品價格
   
   1
   
   
   足球
   
   
   57.5
   
   2
   
   
   籃球
   
   
   64.5
   
   3
   
   
   網球
   
   
   6.5
   
   4
   
   
   網球拍
   
   
   388.5
   
   步驟三:在aspx前臺頁面添加一個用來查詢Label1,TextBox1和Button1。如下圖所示:
   
   步驟四:在查詢按鈕Button1單擊事件中添加如下代碼:
   
    DataTable dt=(DataTable)Session["Table"];
   
    //為數據表建立一個數據視圖
   
    DataView dv=new DataView(dt);
   
    //用RowFilter屬性進行模糊查詢
   
    dv.RowFilter="商品名稱 LIKE'%"+TextBox1.Text.Trim()+"%'";
   
    DataGrid1.DataSource=dv;
   
    DataGrid1.DataBind();
   
   運行頁面后在TextBox1中輸入“網”,按查詢按鈕后 ,DataGrid顯示的查詢結果如下:
   
   
   
   ID
   
   
   商品名稱
   
   
   商品價格
   
   3
   
   
   網球
   
   
   6.5
   
   4
   
   
   網球拍
   
   
   388.5
   
   步驟五:在aspx前臺頁面上添加一個Label2控件,兩個TextBox控件-TextBox1和TextBox2,以及一個“查詢”按鈕,Button2,如下圖所示,用來查詢用戶輸入的價格范圍中在商品。
   
   步驟六:在后臺代碼中為Button2按鈕單擊事件添加如下如下代碼:
   
   DataTable dt=(DataTable)Session["Table"];
   
   DataView dv=new DataView(dt);
   
    dv.RowFilter="商品價格>="+TextBox2.Text.Trim()+" AND 商品價格<="+TextBox3.Text.Trim();
   
    DataGrid1.DataSource=dv;
   
    DataGrid1.DataBind();
   
   
   
   用戶在兩個文本框中輸入價格范圍,10,70后,DataGrid1中顯示的查詢結果如下:
   
   
   
   ID
   
   
   商品名稱
   
   
   商品價格
   
   1
   
   
   足球
   
   
   57.5
   
   2
   
   
   籃球
   
   
   64.5
   
   
   
   可見,用DataView的RowFilter屬性完全能達到SQL語句SELECT語句所實現的功能
   
   RowFilter中的查詢語句與SQL語句中SELECT語句的語法和作用都極為相似,以下是摘自MSDN中關于RowFilter查詢語句的語法說明:
   
   /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   
   用戶定義的值可以用在將與列值進行比較的表達式內。字符串值應放在單引號內。日期值應放在磅符號 (#) 內。對于數值,允許使用小數和科學記數法。例如:
   
   
   
   "FirstName = 'John'"
   
   
   
   "Price <= 50.00"
   
   
   
   "Birthdate < #1/31/82#"
   
   
   
   對于包含枚舉值的列,將值強制轉換為整數數據類型。例如:
   
   
   
   "EnumColumn = 5"
   
   
   
   運算符
   
   
   
   使用布爾值 AND、OR 和 NOT 運算符時允許串聯。可以使用括號來組合子句和強制優先級。AND 運算符優先于其他運算符。例如:
   
   
   
   (LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'
   
   
   
   在創建比較表達式時,允許使用下列運算符:
   
   
   
   <
   
   
   
   >
   
   
   
   <=
   
   
   
   >=
   
   
   
   <>
   
   
   
   =
   
   
   
   IN
   
   
   
   LIKE
   
   
   
   在表達式中還支持下列算術運算符:
   
   
   
   +(加)
   
   
   
   -(減)
   
   
   
   *(乘)
   
   
   
   /(除)
   
   
   
   %(模數)
   
   
   
   字符串運算符
   
   
   
   若要連接字符串,請使用 + 字符。字符串比較是否區分大小寫由 DataSet 類的 CaseSensitive 屬性的值來確定。但是,可以用 DataTable 類的 CaseSensitive 屬性重寫此值。
   
   
   
   通配符
   
   
   
   在 LIKE 比較中,* 和 % 兩者可以互換地作為通配符。如果 LIKE 子句中的字符串包含 * 或 %,那么這些字符應用中括號([])對其進行轉義。如果子句中有中括號,那么中括號字符應用中括號對其進行轉義(例如 [[] 或 []])。在模式的開頭和結尾,或者在模式的結尾,或在模式的開頭允許使用通配符。例如:
   
   
   
   "ItemName LIKE '*product*'"
   
   
   
   "ItemName LIKE '*product'"
   
   
   
   "ItemName LIKE 'product*'"
   
   
   
   在字符串的中間不允許使用通配符。例如,不允許 'te*xt'。
   
   
   
   父/子關系引用
   
   
   
   通過在列名稱前面加 Parent,就可以在表達式中引用父表。例如,Parent.Price 引用父表的名為 Price 的列。
   
   
   
   通過在列名稱前面加一個 Child,就可以在表達式中引用子表中的列。但是,因為子關系可以返回多行,所以必須在聚合函數中包括對子列的引用。例如,Sum(Child.Price) 將返回子表中名為 Price 的列的總和。
   
   
   
   如果某個表有多個子表,則語法是:Child(RelationName)。例如,如果某個表有兩個子表,它們的名稱分別為 Customers 和 Orders,則 DataRelation 對象被命名為 Customers2Orders,引用將為:
   
   
   
   Avg(Child(Customers2Orders).Quantity)
   
   
   
   聚合
   
   
   
   支持下列聚合類型:
   
   
   
   Sum(求和)
   
   
   
   Avg(平均)
   
   
   
   Min(最小值)
   
   
   
   Max(最大值)
   
   
   
   Count(計數)
   
   
   
   StDev(統計標準偏差)
   
   
   
   Var(統計方差)。
   
   
   
   聚合通常沿著關系執行。通過使用上面列出的函數之一和上面“父/子關系引用”中詳述的子表列,來創建聚合表達式。例如:
   
   
   
   Avg(Child.Price)
   
   
   
   Avg(Child(Orders2Details).Price)
   
   
   
   聚合也可以在單個表上執行。例如,若要為名為“Price”的列中的數字創建匯總,就用:
   
   
   
   Sum(Price) 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品爽片免费看久久| 日韩av免费看网站| 亚洲伊人一本大道中文字幕| 日韩国产高清污视频在线观看| 欧美日韩国产在线看| 日韩免费精品视频| 亚洲精品日韩丝袜精品| 日韩av在线天堂网| 亚洲丝袜av一区| 精品国产一区二区三区四区在线观看| 日本不卡视频在线播放| 亚洲精品第一国产综合精品| 欧美成人精品xxx| 亚洲欧美国产高清va在线播| 亚洲人成电影在线观看天堂色| 色www亚洲国产张柏芝| 欧美性xxxx极品hd欧美风情| 国产成人精品一区二区在线| 国产精品91一区| 伊人久久久久久久久久久| 精品国产91久久久久久老师| 欧美网站在线观看| 久久精品91久久久久久再现| 九九热r在线视频精品| 这里只有精品丝袜| 亚洲新声在线观看| 成人亚洲综合色就1024| 欧美激情精品在线| 国产精品高清在线| 精品性高朝久久久久久久| 亚洲精品动漫100p| 一区二区三区视频在线| 日韩电影免费观看在线观看| 欧美激情一区二区三区在线视频观看| 亚洲电影免费观看高清完整版在线观看| 91久久久久久久久久久久久| 国产精品免费一区豆花| 日本不卡视频在线播放| 久久成人18免费网站| 久久久人成影片一区二区三区观看| 欧美日韩国产成人高清视频| 国产精品成人aaaaa网站| 精品欧美国产一区二区三区| 欧美日韩一区二区免费视频| 国产午夜精品免费一区二区三区| 欧美性猛交xxxx免费看漫画| 色一区av在线| 国产成人精品亚洲精品| 91精品免费视频| 国内精品久久久久影院优| 国产精品成人av在线| 亚洲欧美成人一区二区在线电影| 中文字幕欧美精品日韩中文字幕| 91精品国产91久久久久久不卡| 国产日韩欧美另类| 亚洲第一视频网站| 国产午夜精品视频| 中文字幕欧美日韩va免费视频| 亚洲色图美腿丝袜| 国产成人aa精品一区在线播放| 日韩av黄色在线观看| 欧美精品www| 日韩有码在线电影| 欧美成人三级视频网站| 亚洲精品一区二区在线| 91色在线观看| 亚洲视频一区二区| 国产精品久久久久久久久久久久| 成人黄色免费在线观看| 日韩在线观看免费av| 日韩精品在线免费观看视频| 亚洲最大福利视频网站| 97国产精品免费视频| 91精品国产九九九久久久亚洲| 亚洲精品国产欧美| 最近2019年好看中文字幕视频| 日韩在线欧美在线国产在线| 成人黄色av网| 亚洲欧美一区二区三区四区| 国产精品永久免费在线| 最好看的2019的中文字幕视频| 九九热99久久久国产盗摄| 国产精品成人av在线| 亚洲色图18p| 色综合五月天导航| 国产精品久久久久秋霞鲁丝| 日韩av黄色在线观看| 91精品国产高清自在线| 成人激情视频小说免费下载| 中文字幕亚洲自拍| 欧美多人爱爱视频网站| 久久精品国产一区二区三区| 久久久视频在线| 日日噜噜噜夜夜爽亚洲精品| 国产欧美va欧美va香蕉在| 久久影视免费观看| 欧美性极品少妇精品网站| 456亚洲影院| 久久这里有精品| 色播久久人人爽人人爽人人片视av| 中文字幕日韩有码| 精品福利樱桃av导航| 国产激情久久久久| 懂色av一区二区三区| 中文字幕日韩在线播放| 黄色一区二区三区| 亚洲2020天天堂在线观看| 91久久精品日日躁夜夜躁国产| 亚洲国产精品人人爽夜夜爽| 另类天堂视频在线观看| 久久久久久香蕉网| 欧美激情视频一区二区| 国产乱肥老妇国产一区二| 久久中文字幕在线视频| 欧美日韩激情小视频| 日韩av综合中文字幕| 亚洲第一中文字幕在线观看| 亚洲精品福利免费在线观看| 欧美福利小视频| 久久亚洲国产精品成人av秋霞| 国产免费一区视频观看免费| 久久久久亚洲精品成人网小说| 欧美日韩精品二区| 懂色aⅴ精品一区二区三区蜜月| 成人久久久久久久| 欧美日韩一区二区在线播放| 欧美在线视频在线播放完整版免费观看| 欧美日韩国产成人高清视频| 欧美精品在线视频观看| 久久久久久久影院| 日韩av资源在线播放| 狠狠爱在线视频一区| 国产不卡一区二区在线播放| 亚洲天堂av在线播放| 日韩在线观看免费全集电视剧网站| 国产一区二区三区直播精品电影| 91欧美精品成人综合在线观看| 国产精品久久网| 国产精品久久久久久久久久久新郎| 国产免费久久av| 久久6精品影院| 国产精品 欧美在线| 美女av一区二区三区| 97成人精品区在线播放| 国产精品一区二区久久久久| 97在线日本国产| 国产视频精品在线| 国内精品400部情侣激情| 91av福利视频| 国产91在线视频| 欧美一区二区三区免费视| 日韩一区二区三区在线播放| 视频在线观看99| 欧美精品aaa| 视频在线观看99| 国产午夜精品美女视频明星a级| 国产精品欧美在线| 久久久久久欧美| 久久免费精品日本久久中文字幕| 亚洲人精品午夜在线观看| 久久久久久久久久亚洲| 成人福利在线观看| 欧美日韩视频免费播放| 亚洲国产毛片完整版|