国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

Visual C#中靈活使用DataView

2024-07-21 02:26:47
字體:
來源:轉載
供稿:網友


可能大家都知道dataview這個名詞的概念,但也許不是很多人可以說清楚在.net架構中它的應用范圍和程度。比如:究竟datagrid和repeater這些控件是如何和數據關聯起來的?很多人會告訴我是通過dataset。這顯然是正確的,但究竟最根本最直接的是通過什么聯系起來的呢?

  答案就是dataview。其實下面的語句:

  

  datagridtc.datasource = dtrst;

  datagridtc.databind();

    在工作的時候,它等效于:

  

  datagridtc.datasource = ds.tables[0].defaultview;

  datagridtc.databind();

    dataset都是通過數據視圖將數據呈現在控件上面的。那如何才能做到物盡其用呢?如果通過靈活地使用dataview讓我們的程序更簡潔,性能更好呢?下面通過一個例子來說明:一段程序想實現將dataset已有的一個datatable重新排序。

  

 


  某個寫法是:

  

  dt = ds.tables[0].copy();

   dt.clear();

  

   int intnewid = 0;

   for(int inti = 0;inti < ds.tables[0].rows.count;inti++)

   {

   dr = dt.newrow();

   dr["datetype"] = ds.tables[0].rows[inti - 1 + 1]["datetype"].tostring();

   dr["tcorder"] = ds.tables[0].rows[inti - 1 + 1]["tcorder"].tostring();

   dr["timeclass_id"] = intnewid;

   dr["timeclass_name"] = ds.tables[0].rows[inti - 1 + 1]["timeclass_name"].tostring();

   dr["chn_namelocal"] = ds.tables[0].rows[inti - 1 + 1]["chn_namelocal"].tostring();

   dr["user_name"] = ds.tables[0].rows[inti - 1 + 1]["user_name"].tostring();

   dr["user_id"] = ds.tables[0].rows[inti - 1 + 1]["user_id"].tostring();

   dt.rows.add(dr);

   dt.acceptchanges();

   intnewid++;

   }

  

   dtrst = dt.copy();

   dtrst.clear();

   foundrow = dt.select("1 = 1", "timeclass_name, datetype, tcorder");

   for(int inti = 0;inti < foundrow.length;inti++)

   {

   dr = dtrst.newrow();

   dr["datetype"] = foundrow[inti]["datetype"].tostring();

   dr["tcorder"] = foundrow[inti]["tcorder"].tostring();

   dr["timeclass_id"] = foundrow[inti]["timeclass_id"].tostring();

   dr["timeclass_name"] = foundrow[inti]["timeclass_name"].tostring();

   dr["chn_namelocal"] = foundrow[inti]["chn_namelocal"].tostring();

   dr["user_name"] = foundrow[inti]["user_name"].tostring();

   dr["user_id"] = foundrow[inti]["user_id"].tostring();

   dtrst.rows.add(dr);

   dtrst.acceptchanges();

   }

  

   datagridtc.datasource = dtrst;

   datagridtc.databind();

    另外一個寫法是:

  

  dataview dv = ds.tables[0].defaultview;

   dv.sort = "timeclass_name, datetype, tcorder";

   datagridtc.datasource = dv;

   datagridtc.databind();

    顯然方法二從代碼上就簡潔多了,更重要的是它不要再新創建dataset等,減少了內存和cpu的消耗。

  因此大家在遇到需要排序或者過濾數據的時候,要多想想可否使用dataview來實現了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 琼结县| 连山| 南城县| 开江县| 南郑县| 勃利县| 阿克苏市| 方城县| 陆丰市| 枝江市| 南丰县| 东明县| 尤溪县| 长岭县| 宁南县| 扶沟县| 尼勒克县| 潞城市| 开阳县| 旬阳县| 昭通市| 嘉定区| 元阳县| 伊吾县| 抚顺县| 德兴市| 红安县| 札达县| 阿合奇县| 高邮市| 靖江市| 通渭县| 微山县| 东光县| 凤翔县| 麦盖提县| 昌江| 鲁甸县| 双牌县| 六枝特区| 隆化县|