保存时需要按照某列排序?
why?你添加一个数据表用于映射 打印机 001 这样的顺序,
这样数据表你不就能根据映射的顺序来排列了吗?
为什么要非要物理的排列?

解决方案 »

  1.   

    to:hanbinghai(海宁)
    思路很好!如果项目值少,可以当作参数保存在另外一个表里,你的方法很棒.
    但是我这个项目值不是固定的,可能有成千上万种,在录入时不停地增加,这个方法可能不太适用.
      

  2.   

    如果我不作物理的排列,用户在DataGrid的列头点击一下,就可以达到相同的效果,但是,客户就是不愿意点这么一下,只好....
      

  3.   

    如果我不作物理的排列,用户在DataGrid的列头点击一下,就可以达到相同的效果,但是,客户就是不愿意点这么一下,只好....
    ?????
    你在SQL语句里加个 ORDER BY 不可以吗???为什么一定做物理的排列?不明白!!
      

  4.   

    ORDER BY ?
    刚添加的,在哪儿去 ORDER BY ? 
    在内存里? Visual FoxPro就可以轻松搞掂,.Net里嘛,嘿嘿....
      

  5.   

    "为什么一定做物理的排列?不明白!!"
    是报价单,一种货物根据定购量的多少分档次有不同的报价,客户在添加时不一定同一种货物放在一起添加,但要保存在一起.
    如果实在不行,只好使使小伎俩骗骗客户,保存时不管它,Select时Order By,然后告诉客户"放一起了",反正他也搞不懂,嘿嘿..............................
      

  6.   

    保存时如果没有必要的话,不应该考虑行之间的次序
    SELECT 的时候Order By就可以了
    这个是很正常的做法,关系数据库的原理上来讲,行和列都是无序的对客户上来说,他其实并不知道或者说关心数据存放的具体位置,也不应该让他们了解过多的技术细节,只要最后呈现在他们面前的数据是你Order By之后的数据,他们肯定会认可的
      

  7.   

    private void Form1_Load(object sender, System.EventArgs e)
    {
    DataGridTableStyle ts = new DataGridTableStyle(true);
    ts.MappingName = this.dataGrid1.DataMember;
    this.dataGrid1.TableStyles.Clear();
    this.dataGrid1.TableStyles.Add(ts);
    this.RemoveDataGridTextBox(this.dataGrid1);
    this.sqlDataAdapter1.Fill(this.dataSet11);
    //假设有一列为ID升序排列
    DataView myView = new DataView(this.dataSet11.Tables[0],"","id desc",DataViewRowState.CurrentRows);
    this.dataGrid1.DataSource = myView;
    this.Cursor = Cursors.Arrow;
    }
      

  8.   

    再dataview里面可以排序DataView custDV = new DataView(custDS.Tables["Customers"], 
                                   "Country = 'USA'", 
                                   "ContactName", 
                                   DataViewRowState.CurrentRows);以下代码演示如何使用该表的 DefaultView 属性获取对 DataTable 的默认 DataView 的引用。
    DataView custDV = custDS.Tables["Customers"].DefaultView;
    DataView 提供了几项用于对 DataTable 中的数据进行排序和筛选的功能: 使用 Sort 属性,您可以指定单个或多个列排序顺序并包含 ASC(升序)和 DESC(降序)参数。 
    可以使用 ApplyDefaultSort 属性自动以升序创建基于表的一个或多个主键列的排序顺序。只有当 Sort 属性为空引用或空字符串时以及表已定义主键时,ApplyDefaultSort 才适用。 
    使用 RowFilter 属性,您可以根据行的列值来指定行的子集。有关 RowFilter 属性的有效表达式的更多信息,请参见有关 DataColumn 类的 Expression 属性的参考信息。 
    如果要返回对数据的特定查询的结果(而不是提供数据子集的动态视图)以实现最佳性能,请使用 DataView 的 Find 或 FindRows 方法,而不是设置 RowFilter 属性。设置 RowFilter 属性会使数据的索引被重新生成,从而增加应用程序的系统开销并降低性能。最好将 RowFilter 属性用于其中的绑定控件显示筛选结果的数据绑定应用程序。Find 和 FindRows 方法会利用当前的索引,而不需要重新生成索引。有关 Find 和 FindRows 方法的更多信息,请参见搜索 DataView。 使用 RowStateFilter 属性,您可以指定要查看的行版本。DataView 根据基础行的 RowState 来隐式地管理要公开哪些行版本。例如,如果 RowStateFilter 设置为 DataViewRowState.Deleted,由于不存在 Current 行版本,DataView 将公开所有 Deleted 行的 Original 行版本。可以使用 DataRowView 的 RowVersion 属性来确定要公开行的哪些行版本。 
    下表显示了 DataViewRowState 选项。 程序如 海宁 提供的,
      

  9.   

    感谢各位.
    大家讲的都是逻辑排序,我的刁钻的客户要的是物理排序,看来只有我的那个笨办法可以满足客户了.但是我现在改变主意了.就像The_Gathering(疯车车)所说"不应该让他们了解过多的技术细节",我只要提供给客户Order By之后的数据,并且告诉客户这就是实际的排序,客户也无从知晓实情.我犯不着傻乎乎的跟着客户钻牛角尖.
    结贴!