请问GridView如何根据绑定的字段过滤。用户名相同只要分数最高的那条数据。
请问如何根据它的memberSerials如果memberSerials字段相同只在GridView中显示同个帐号的最高分
如图GridView数据从xml中读出,字段依次为:
memberSerials、names、marks、times,经过DataSet数据使用过DataView将分数以大小排序,代码如下:
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("xmls/tops20.aspx"));
XmlDocument doc = new XmlDocument();
doc.Load("xmls/tops20.aspx");
ds.Tables[0].Columns.Add("iPersonOrderSort", System.Type.GetType("System.Int32"));
ds.Tables[0].Columns["iPersonOrderSort"].Expression = "Convert(marks,'System.Int32')";
DataView tableview = ds.Tables[0].DefaultView;
tableview.Sort = "iPersonOrderSort desc";
GvList.DataSource = tableview;
GvList.DataBind();
请问如何根据它的memberSerials判断如果GridView中memberSerials字段有相同。只在GridView中显示同个帐号(memberSerials)的最高分。marks为分数。麻烦高人了,在下坐等结贴。
------解决方案--------------------
http://bbs.csdn.net/topics/20450903
参考吧
------解决方案--------------------我感觉先把ds的数据放到hashtable里,然后在绑定gridview。
hashtable ht = new hashtable();
for(int i=0;i<ds.table[0].rows.count;i++)
{
person p = new person ();
if(ht.contains(ds.table[0].rows[i]["memberSerials"].tostring()))
{
p = (person)ht[ds.table[0].rows[i]["memberSerials"].tostring()];
if(p.marks < ds.table[0].rows[i]["marks "].tostring())
{
p.marks = ds.table[0].rows[i]["marks "].tostring();
ht.remove(ds.table[0].rows[i]["memberSerials"].tostring());
ht.add(ds.table[0].rows[i]["memberSerials"].tostring(),P)
}
}
else
{
p.memberSerials = ds.table[0].rows[i]["memberSerials"].tostring();
p.names = ds.table[0].rows[i]["names "].tostring();
p.marks = ds.table[0].rows[i]["marks "].tostring();
p.times = ds.table[0].rows[i]["times "].tostring();
ht.add(ds.table[0].rows[i]["memberSerials"].tostring(),P)
}
}
不知道对不对瞎写的啊 感觉是是可以的