日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

解决DataGridView绑定List后不能排序的问题

發布時間:2023/12/2 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解决DataGridView绑定List后不能排序的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

???閱讀全文并下載例子 :http://www.sufeinet.com/forum.php?mod=viewthread&tid=190

? 以前不都是用table直接綁定DataGridView的,沒有出現過不能排序的問題,初試List結果發現不管怎么樣都不能實現排序的功能,有朋友說

DataGridView每一列都有個Sortable,默認Automatic,改成NotSortable了,結果怎樣,還是不行啦。

???? 還有朋友說, 你可以拖一個bindingsource控件. bindingsource.datasource=泛型集合 datagridview.datasource=bindingsource;

我發現也是不行,那要怎么辦呢?查一下資料才知道

??? 用泛型會失去DateTable的特性,要實現System.Collections.Generic.IComparer<T> 才能實現排序

?沒有辦法只能實現 一把了

? 看一下下面的代碼吧, 基本 是這樣的

代碼 using?System;
using?System.ComponentModel;
using?System.Collections.Generic;
using?System.Reflection;

namespace?BaseFunction
{
????
class?ObjectPropertyCompare<T>?:?System.Collections.Generic.IComparer<T>?
????{
????????
private?PropertyDescriptor?property;
????????
private?ListSortDirection?direction;

????????
public?ObjectPropertyCompare(PropertyDescriptor?property,?ListSortDirection?direction)
????????{
????????????
this.property?=?property;
????????????
this.direction?=?direction;
????????}

????????
#region?IComparer<T>

????????
///?<summary>
????????
///?比較方法
????????
///?</summary>
????????
///?<param?name="x">相對屬性x</param>
????????
///?<param?name="y">相對屬性y</param>
????????
///?<returns></returns>
????????public?int?Compare(T?x,?T?y)
????????{
????????????
object?xValue?=?x.GetType().GetProperty(property.Name).GetValue(x,?null);
????????????
object?yValue?=?y.GetType().GetProperty(property.Name).GetValue(y,?null);

????????????
int?returnValue;

????????????
if?(xValue?is?IComparable)
????????????{
????????????????returnValue?
=?((IComparable)xValue).CompareTo(yValue);
????????????}
????????????
else?if?(xValue.Equals(yValue))
????????????{
????????????????returnValue?
=?0;
????????????}
????????????
else
????????????{
????????????????returnValue?
=?xValue.ToString().CompareTo(yValue.ToString());
????????????}

????????????
if?(direction?==?ListSortDirection.Ascending)
????????????{
????????????????
return?returnValue;
????????????}
????????????
else
????????????{
????????????????
return?returnValue?*?-1;
????????????}
????????}

????????
public?bool?Equals(T?xWord,?T?yWord)
????????{
????????????
return?xWord.Equals(yWord);
????????}

????????
public?int?GetHashCode(T?obj)
????????{
????????????
return?obj.GetHashCode();
????????}

????????
#endregion
????}
}

?

在實現了這個接口之后還不能急,我們還要來寫一個SortableBindingList <T> :BindingList <T> 的類用來綁定數據

基本實現

?

代碼 using?System;
using?System.ComponentModel;
using?System.Collections.Generic;
using?System.IO;
using?System.Runtime.Serialization.Formatters.Binary;
using?System.Text;

namespace?BaseFunction
{
????
public?class?BindingCollection<T>?:?BindingList<T>
????{
????????
private?bool?isSorted;
????????
private?PropertyDescriptor?sortProperty;
????????
private?ListSortDirection?sortDirection;

????????
protected?override?bool?IsSortedCore
????????{
????????????
get?{?return?isSorted;?}
????????}

????????
protected?override?bool?SupportsSortingCore
????????{
????????????
get?{?return?true;?}
????????}

????????
protected?override?ListSortDirection?SortDirectionCore
????????{
????????????
get?{?return?sortDirection;?}
????????}

????????
protected?override?PropertyDescriptor?SortPropertyCore
????????{
????????????
get?{?return?sortProperty;?}
????????}

????????
protected?override?bool?SupportsSearchingCore
????????{
????????????
get?{?return?true;?}
????????}

????????
protected?override?void?ApplySortCore(PropertyDescriptor?property,?ListSortDirection?direction)
????????{
????????????List
<T>?items?=?this.Items?as?List<T>;

????????????
if?(items?!=?null)
????????????{
????????????????ObjectPropertyCompare
<T>?pc?=?new?ObjectPropertyCompare<T>(property,?direction);
????????????????items.Sort(pc);
????????????????isSorted?
=?true;
????????????}
????????????
else
????????????{
????????????????isSorted?
=?false;
????????????}

????????????sortProperty?
=?property;
????????????sortDirection?
=?direction;

????????????
this.OnListChanged(new?ListChangedEventArgs(ListChangedType.Reset,?-1));
????????}

????????
protected?override?void?RemoveSortCore()
????????{
????????????isSorted?
=?false;
????????????
this.OnListChanged(new?ListChangedEventArgs(ListChangedType.Reset,?-1));
????????}
????????//排序
????????
public?void?Sort(PropertyDescriptor?property,?ListSortDirection?direction)
????????{
????????????
this.ApplySortCore(property,?direction);
????????}
????}
}

?

現 在應該流到怎么使用了,其實很簡單

直接

?BindingCollection<object?>?objList?=?new?BindingCollection<object>();
?objList?
=你的結果集;
?
this.dataGridView1.DataSource?=?objList;

?

但是現在是問題是我的之前用的是List,不想改,而且調用的是Dll,人家返回的就是一個List,我沒有辦法改成BindingCollection<object?>啊。

想了半天還是想出來了,只是不知道 在性能和別的方面怎么樣,所以把代碼發上來大家討論一下

我是這樣實現 的

代碼 ?//可以實現排序的類
????????????BindingCollection<historyorderInfo>?objList?=?new?BindingCollection<historyorderInfo>();
????????????
//加載數據
????????????foreach?(historyorderInfo?item?in?tmpList)
????????????{
????????????????objList.Add(item);
????????????}
????????????dgvhistory.DataSource?
=?objList;

?

?

這里的tmpList就是我之前使用的系統原本的List,我是使用了?foreach?把原來的數據導入到BindingCollection中的。

這樣的確定是可以實現 我想要的效果的。不知道這樣做有什么不到之處。希望能得到高人的指點啊,呵呵

?

轉載于:https://www.cnblogs.com/sufei/archive/2010/02/04/1663125.html

總結

以上是生活随笔為你收集整理的解决DataGridView绑定List后不能排序的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日产精品久久久一区二区 | 毛片88 | 国产探花视频在线观看 | 美日韩一区二区三区 | 91福利视频在线观看 | 日日操狠狠操 | 天天看a | 国产白袜脚足j棉袜在线观看 | 丁香午夜| 午夜视频免费在线观看 | 亚洲视频在线播放免费 | 天天操天天曰 | 日欧视频 | 又白又嫩毛又多15p 超碰在线一区 | 日韩黄色影视 | 北岛玲一区二区 | 国产精品999999 | 午夜不卡福利视频 | 无码国内精品人妻少妇蜜桃视频 | 日韩欧美亚洲一区 | 日韩porn| 欧美日本韩国一区 | 污网在线观看 | 999福利视频 | 久操热线 | 99福利视频导航 | 99久久久久| 婷婷一区二区三区四区 | 亚洲国产成人自拍 | 日韩精品一区二区三区四区五区 | 重口味av| 成人午夜视频网站 | 中文字幕av日韩 | jzzjzzjzz亚洲成熟少妇 | 操小妹影院| 黑森林福利视频导航 | 无码人妻一区二区三区免费n鬼沢 | av在线一区二区三区 | 久久99草| 欧美成人h版在线观看 | 精品无码一区二区三区爱欲 | 男女激情四射网站 | 欧美色图一区二区三区 | 调教一区二区 | 青青艹在线观看 | 福利午夜视频 | 欧美91视频| 色欲久久久天天天综合网精品 | 亚洲av综合永久无码精品天堂 | 99精品视频免费版的特色功能 | 国产精品18久久久久久久久 | 成人羞羞国产免费 | 成人在线观看一区二区三区 | 国产精品九九九 | 天天干天天爱天天操 | 五月天婷婷丁香花 | 亚洲字幕在线观看 | 久久久久二区 | 亚洲精品污一区二区三区 | 亚洲午夜av | 成人午夜视频在线 | 亚洲乱亚洲乱 | 久久都是精品 | 国产三级视频 | 福利电影一区 | 国产精品久久久av | 不卡国产视频 | 亚洲精品成a人在线观看 | 黄色小视频在线观看免费 | 中文字字幕码一二三区 | 男人舔女人下部高潮全视频 | 国产精品99无码一区二区 | 亚洲图片一区二区三区 | 国产精品国产 | av在线超碰 | 六月婷婷在线 | 亚洲黄色三级 | 日本成人一二三区 | 欧美日韩国产一区二区三区在线观看 | 国产男男gay体育生网站 | 国产亚洲激情 | 丰满少妇被猛烈进入高清播放 | 大地资源在线观看免费高清版粤语 | 日韩毛片免费看 | 老司机精品福利视频 | 青青草原在线免费观看视频 | 日韩av一区在线 | 91中文视频 | 亚洲欧美日韩中文字幕在线观看 | 亚洲区综合 | 亚洲成人自拍偷拍 | 日韩欧美中文字幕一区二区三区 | 麻豆av一区二区三区久久 | 国产黑丝在线 | 亚州久久久 | 久久久久成人精品免费播放动漫 | 亚洲图片中文字幕 | 人人妻一区二区三区 | 日韩黄色免费视频 |