none
如何用dataview筛选某两列不重复的值,但要返回有5列的datatable RRS feed

  • 问题

  • 如何用dataview筛选某两列不重复的值,但要返回有5列的datatable?用dataview能行吗,不行的话有什么好方法。希望上代码。
    2011年10月26日 3:23

答案

  • 嗯,是我没说清楚。由于我操作的是datagridview,无法在数据库中设置“联合主键”。

    我是从datagridview来操作数据然后存到datatable中的。然后在把datatable中的数据存入数据库。

    而我又不想把重复的数据存到数据库中去。


    直接在DataTable中设置。

    DataTable dt = new DataTable();

    dt.Columns.Add("CommodityID",typeof(int));

    dt.Columns.Add("CardTypeName",typeof(string));

    dt.Columns.Add("Discount",typeof(decimal));

    '人为设定联合主键

    dt.PrimaryKey = new DataColumn[]{dt.Columns["CommodityID"],dt.Columns["CardTypeName"]};

    然后在加载的时候绑定dt到DataGridView,这样你只管在dataGridView输入内容,自动保存到DataTable。也不允许输入重复内容了。

     


    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年10月26日 6:47
    版主

全部回复

  • 如何用dataview筛选某两列不重复的值,但要返回有5列的datatable?用dataview能行吗,不行的话有什么好方法。希望上代码。

    看不懂,请举一个例子说明,截图告诉我运行前DataTable的数据样子和运行之后你要得到的结果。谢谢
    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年10月26日 5:47
    版主
  • 比如,我有一个三列的dgv,前两列都有值,第三列为空,需要用户输入值。然后我要把这三列的值放到datatable中去,要求是datatable中第一列和第二列不能有重复的数据,而此datatable还是有三列。

    我的想法是通过dataview筛选不重复的列:

    DataTable dt = dv.ToTable(true, "CommodityID", "CardTypeName", "Discount");如果这样就会上述结果。

    DataTable dt = dv.ToTable(true, "CommodityID", "CardTypeName");这样的话却只会返回只有两列的datatable。

    我希望达到的效果是不要CommodityID和CardTypeName都重复的列。


    2011年10月26日 6:26
  • DataTable dt = dv.ToTable(true, "CommodityID", "CardTypeName", "Discount");如果这样就会上述结果。


    以上你的方法难道不可以吗?似乎你问题已经解决了。

    但是我以为——后期筛选不如一开始就注意(我的意思——在SQL数据表中直接把这两个字段设置成“组合主键”,然后:

    SqlDataAdapter adapter = new SqlDataAdapter("select * from xxx","连接字符串");

    DataTable dt = new DataTable();

    adapter.FillSchema(dt,SchemaType.Mapped);

    这样一来,因为设置了“联合主键”,就应该不存在你的问题了

     


    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年10月26日 6:36
    版主
  • 嗯,是我没说清楚。由于我操作的是datagridview,无法在数据库中设置“联合主键”。

    我是从datagridview来操作数据然后存到datatable中的。然后在把datatable中的数据存入数据库。

    而我又不想把重复的数据存到数据库中去。

    2011年10月26日 6:42
  • 嗯,是我没说清楚。由于我操作的是datagridview,无法在数据库中设置“联合主键”。

    我是从datagridview来操作数据然后存到datatable中的。然后在把datatable中的数据存入数据库。

    而我又不想把重复的数据存到数据库中去。


    直接在DataTable中设置。

    DataTable dt = new DataTable();

    dt.Columns.Add("CommodityID",typeof(int));

    dt.Columns.Add("CardTypeName",typeof(string));

    dt.Columns.Add("Discount",typeof(decimal));

    '人为设定联合主键

    dt.PrimaryKey = new DataColumn[]{dt.Columns["CommodityID"],dt.Columns["CardTypeName"]};

    然后在加载的时候绑定dt到DataGridView,这样你只管在dataGridView输入内容,自动保存到DataTable。也不允许输入重复内容了。

     


    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年10月26日 6:47
    版主