RT,被这问题折磨疯了。

解决方案 »

  1.   

    这个问题不能在数据库里面处理吗? 如果用dataset 处理 我也来学习学习。
      

  2.   

    这个最好在sql中处理吧,fill的时候就把重复的过滤掉
      

  3.   

    1、sql取数据时,用distinct过滤掉相同的数据;
    2、fill("table")的时候,看看是否已经有数据了
      

  4.   

    这个 在做添加的时候 用SQL判断  容易多了
      

  5.   

    你要的效果是 加入有重复的数据只显示 一条 还是  说目前有这个问题 ?要让它全部显示重复的数据?如果是后者 你就去看看
    SQL 语句啊!  看看你的SQL 语句 
    不管Dataset的事情
    然后把你sql 语句贴出来! 如果是前者  那么就过滤重复数据吧//// <summary>
             /// 返回执行Select distinct后的DataTable
             /// </summary>
             /// <param name="SourceTable">源数据表</param>
             /// <param name="FieldNames">字段集</param>
             /// <returns></returns>
             private DataTable SelectDistinct(DataTable SourceTable, params string[] FieldNames)
             {
                 object[] lastValues;
                 DataTable newTable;
                 DataRow[] orderedRows;             if (FieldNames == null || FieldNames.Length == 0)
                     throw new ArgumentNullException("FieldNames");             lastValues = new object[FieldNames.Length];
                 newTable = new DataTable();             foreach (string fieldName in FieldNames)
                     newTable.Columns.Add(fieldName, SourceTable.Columns[fieldName].DataType);             orderedRows = SourceTable.Select("", string.Join(",", FieldNames));             foreach (DataRow row in orderedRows)
                 {
                     if (!fieldValuesAreEqual(lastValues, row, FieldNames))
                     {
                         newTable.Rows.Add(createRowClone(row, newTable.NewRow(), FieldNames));                     setLastValues(lastValues, row, FieldNames);
                     }
                 }             return newTable;
             }         private bool fieldValuesAreEqual(object[] lastValues, DataRow currentRow, string[] fieldNames)
             {
                 bool areEqual = true;             for (int i = 0; i < fieldNames.Length; i++)
                 {
                     if (lastValues[i] == null || !lastValues[i].Equals(currentRow[fieldNames[i]]))
                     {
                         areEqual = false;
                         break;
                     }
                 }             return areEqual;
             }         private DataRow createRowClone(DataRow sourceRow, DataRow newRow, string[] fieldNames)
             {
                 foreach (string field in fieldNames)
                     newRow[field] = sourceRow[field];             return newRow;
             }         private void setLastValues(object[] lastValues, DataRow sourceRow, string[] fieldNames)
             {
                 for (int i = 0; i < fieldNames.Length; i++)
                     lastValues[i] = sourceRow[fieldNames[i]];
             }使用方法
    DataTable dt=(System.Data.DataTable)this.ViewState["Mydt"];
                 string[] fileds={"Filed1","Filed2"};//DISTINCT字段数组
                 DataTable newdt=this.SelectDistinct(dt,fileds);//返回过滤后的DataTable