DefaultView 的作用(对DataSet查询出的来数据进行排序)(这个老哥的太长了)

DefaultView:默认视图。datatable.DefaultView获取整个表的视图(就像sql查询出来的那样子一样,一个数据集,差不多)

SqlConnection conn = new SqlConnection("server=.;database=mydata;uid=sa;pwd=123456;");
conn.Open();
SqlDataAdapter adp = new SqlDataAdapter();
adp.SelectCommand = new SqlCommand("select * from goods",conn);
DataSet ds = new DataSet();
adp.Fill(ds, "goods"); //填充DataSet内存数扰库
Response.Write(ds.Tables[0].DefaultView.Count); //显增当前查询结果的总行数
ds.Tables[0].DefaultView.Sort = "GoodsID Desc"; //这里设定排序的字段及方式(从红字可以看出,defaultView是在table的基础上进行行为的)
ds.Tables[0].DefaultView.RowFilter = "Shopid = 1"; //设定过滤条件, 得到条件潢足为”ShopID =1 的所有数据”
this.GridView1.DataSource = ds.Tables[0]; //绑定到gridview数据源
this.GridView1.DataBind();
其中如果我们需要变更查询结结果, 例如得到所有goodsID字段大于10的数据, 则只需改变上面代码中的
ds.Tables[0].DefaultView.RowFilter = "Shopid = 1";  改为  ds.Tables[0].DefaultView.RowFilter = "goodsID > 10";

DatagridTC.DataSource = dtRst;(他是一个dt)
DatagridTC.DataBind();
在工作的时候,它等效于:

DatagridTC.DataSource = ds.Tables[0].DefaultView;
DatagridTC.DataBind();

-----------------------------------------------------------------------------------------------------------------------------------

dataview

DataView dv = ds.Tables[0].DefaultView;

 dv.Sort = "TimeClass_Name, DateType, TCOrder";

DatagridTC.DataSource = dv;
 DatagridTC.DataBind();

因此大家在遇到需要排序或者过滤数据的时候,要多想想可否使用dataview来实现了。

dataview可以用于对你的datatable筛选,搜索,排序,编辑和导航。可以方便对databale的操作。

 public datatable EditTable(datatable dataTable)
{
  DataView dv = dataTable.DefaultView;
  dv.RowFilter = "City='" + City + "' AND SpreadPos='" + SpreadPos + "' AND KeyWord Like '%" + Key + "%'";//可以看到rowfilter支持多条件查询和 like模糊查询,此外还支持下列聚合类型:Sum(求和) Avg(平均) Min(最小值) Max(最大值) Count(计数)StDev(统计标准偏差) Var(统计方差)。
  dv.Sort = "CompanyName DESC";//排序
  dataTableRes = dv.Table;//变成table
  return dataTableRes ;
}

都可以用于过滤,用于排序,都是dt的下一阶级

自己遇到的代码是排序:点击页眉进行排序

   protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState["SortOrder"] = "UName";
ViewState["OrderDire"] = "ASC";
}
} protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
string sPage = e.SortExpression;
if (ViewState["SortOrder"].ToString() == sPage)
{
if (ViewState["OrderDire"].ToString() == "Desc")
ViewState["OrderDire"] = "ASC";
else
ViewState["OrderDire"] = "Desc";
}
else
{
ViewState["SortOrder"] = e.SortExpression;
}
bind();
}
public void bind()
{ string sqlstr = "select * from UserInfo";
sqlcon = new SqlConnection(sqlCon);
SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
DataSet myds = new DataSet();
sqlcon.Open();
myda.Fill(myds, "UserInfo");
DataView view = myds.Tables["UserInfo"].DefaultView;
string sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];
view.Sort = sort;
GridView1.DataSource = view;
GridView1.DataBind();
sqlcon.Close();
}

相关链接:

DataView的用法

DataView和DefaultView的理解的更多相关文章

  1. 去除DataTable中的重复数据

    有时需要从DataTable中抽取Distinct数据,遍历比较费劲,C#.NET中其实有更易用的方法,如下: string[] columnArray = { "columnName1&q ...

  2. 【C#】让DataGridView输入中实时更新数据源中的计算列

    本文适用Winform开发,且DataGridView的数据源为DataTable/DataView的情况. 理解前提:熟知DataTable.DataView 求:更好方案 考虑这样一个场景: 某D ...

  3. DataTable过滤重复字段

    有时我们需要从DataTable中抽取Distinct数据,以前总是以对DataTable进行foreach之类纯手工方式获取. 近来发现DataView可以帮我们直接获取Distinct数据,汗一个 ...

  4. DataTable 中Distinct操作

    DataTable dt = ds.Tables[]; DataView dataView = dt.DefaultView; DataTable dtDistinct = dataView.ToTa ...

  5. 原来DataTable的Distinct竟如此简单!

    DataView可以帮我们直接获取Distinct数据, DataTable dataTable;DataView dataView = dataTable.DefaultView; DataTabl ...

  6. C# 对Datatable排序

    一,在C#中要对Datatable排序,可使用DefaultView的Sort方法.先获取Datatable的DefaultView,然后设置 得到的Dataview的sort属性,最后用视图的ToT ...

  7. 原来DataTable的Distinct竟如此简单![转]

    本文转自:http://www.cnblogs.com/BlueFly/archive/2009/01/08/1372151.html 有时我们需要从DataTable中抽取Distinct数据,以前 ...

  8. DataTable distinct 去重复

    有时我们需要从DataTable中抽取Distinct数据,以前总是以对DataTable进行foreach之类纯手工方式获取. 近来发现DataView可以帮我们直接获取Distinct数据,汗一个 ...

  9. C# DataTable抽取Distinct数据(不重复数据)

    http://blog.csdn.net/jyh_jack/article/details/17959821 DataTable dataTable; DataView dataView = data ...

随机推荐

  1. POJ 3260 DP

    只需要对John的付款数做一次多重背包,对shopkeeper的找零钱数做一次完全背包即可. 最重要的是上界的处理.可以注意到,John的付款数最多为maxv*maxv+m,也就是24400元.同理, ...

  2. Python 接口类或抽象类 反射

    # 抽象类或者接口类,制定规范,统一方法名 # # 抽象类或者接口类,制定规范,统一方法名 from abc import ABCMeta,abstractmethod class Payrole(m ...

  3. form&input

    <form action="http://www.baidu.com" method="post" autocomplete="on" ...

  4. Android设计模式——单例模式

    1.单例模式就是确保一个类,只有一个实例化对象,而且自行实例化并向整个系统提供这个实例. 2.使用场景: 确保某个类,有且只有一个对象,避免产生对个对象,消耗过多的资源. 2.实现单例模式的重要点: ...

  5. windows下git server搭建

    使用gitblit1.8搭建 首先要安装JDK 然后下载gitblit,这里给一个CSDN下载 https://download.csdn.net/download/nietzsche0/104826 ...

  6. Simula-Virtual function

    Simula is the name of two simulation programming languages, Simula I and Simula 67, developed in the ...

  7. Bootstrap入门!

    什么是Bootstrap? Bootstrap,来自Twitter,是目前很受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加 ...

  8. webpack中关于require与import的区别

    1.require常见使用场景: var path = require('path') var utils = require('./utils') 此时webpack会将path/utils/con ...

  9. STM32CubeMx的使用分享

    1. 新建立工程(以F103ZET6为例) 2. 配置引脚(以PA0为例)   3. 配置外设(以串口为例) 4. 配置时钟 5. 外设.GPIO.中断初始化 6. 生成工程 7. 添加自己的代码 8 ...

  10. 【【henuacm2016级暑期训练】动态规划专题 D】Writing Code

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 二维费用背包. f[i][j][k] 前i个人,写了j行,bug不超过k的方案数. 可以把每个人看成是一个物品. 它可以无限拿.然后 ...