灰常急,Dataset中有相同数据,只显示一条 RT,被这问题折磨疯了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个问题不能在数据库里面处理吗? 如果用dataset 处理 我也来学习学习。 这个最好在sql中处理吧,fill的时候就把重复的过滤掉 1、sql取数据时,用distinct过滤掉相同的数据;2、fill("table")的时候,看看是否已经有数据了 这个 在做添加的时候 用SQL判断 容易多了 你要的效果是 加入有重复的数据只显示 一条 还是 说目前有这个问题 ?要让它全部显示重复的数据?如果是后者 你就去看看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 infopath 字符串函数 请教listbox问题 以浏览器的一个新窗口形式打开一个新的页面,在后台如何实现?(C#) 如何对发布的新闻数目进行限制 只有10分了,全送,请帮帮忙! 跪求WPF中TreeView控件动态添加节点的思路以及代码(急) 项目外包 sql 语句 我构造的SQL insert 的语句,老出错,请帮忙看一下,语句见内。 c#中把数据插入到数据库中为什么失败 标题行可以绑定数据吗? AspNetPage分页控件三层模式的使用 新手或者跟一样脑袋转不过弯的看看
2、fill("table")的时候,看看是否已经有数据了
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