日韩性视频-久久久蜜桃-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后不能排序的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 可以免费看的黄色网址 | 天天做夜夜做 | 久久久无码精品亚洲无少妇 | 99热在线只有精品 | 四虎免费视频 | 日韩av毛片在线观看 | 国产12页| 在线国产黄色 | 黄色片免费观看视频 | 波岛野结衣 | 欧美jjzz | a√国产 | 黄色片免费观看 | 久久久久综合网 | 亚洲无码国产精品 | 免费啪啪网址 | 亚洲精品国产精品乱码视色 | 久久久久久99精品 | 久久久香蕉 | 中文字幕+乱码+中文乱码www | 国产农村妇女精品久久久 | 亚洲欧洲自拍偷拍 | 免费网站在线高清观看 | 波多野结衣一二三四区 | 亚洲第一成网站 | 精品国精品国产 | 欧美久久视频 | 浪潮av一区二区三区 | 一级全黄毛片 | 精品久久一区二区 | 在线观看日韩中文字幕 | 免费日韩精品 | 久热久| 92国产精品| 欧美天天色 | 日韩精品无码一区二区三区 | 日韩精品一区二区三区无码专区 | 澳门色网 | a在线视频 | 免费看黄色的视频 | 国产青青 | 欧美日韩一区二区三区不卡 | 婷婷五月色综合 | 亚洲熟妇av日韩熟妇在线 | 玖玖五月| 日韩一区二区三区在线观看 | 亚洲一区动漫 | 亚洲欧洲自拍偷拍 | 久久影院午夜 | 娇妻第一次尝试交换的后果 | 日韩毛片大全 | 在线视频第一页 | 香蕉视频色版 | 在线观看欧美一区二区 | 久久爱成人 | 成人av在线一区二区 | 一区二区三区视频免费在线观看 | 欧美精品videos另类日本 | 国产aⅴ爽av久久久久成人 | 白又丰满大屁股bbbbb | 午夜影视网 | 无码日本精品xxxxxxxxx | 男人日女人逼 | www,色| 无码日韩精品一区二区 | 做暧暧视频在线观看 | 天天艹日日干 | 日韩一区二区毛片 | 伊人日日夜夜 | 成年人在线观看 | 又嫩又硬又黄又爽的视频 | 一区二区三区四区久久 | 国产精品美女自拍视频 | 日韩少妇视频 | 精品免费一区 | 国产福利视频一区二区三区 | www.伊人 | 97超碰在线免费 | 国产亚洲精品久久久久久无几年桃 | 吖v在线 | 久久久在线免费观看 | 极品美女扒开粉嫩小泬 | 男人亚洲天堂 | 日韩在线观看免费av | 吃奶av| 国产一区二区三区在线免费观看 | 在线观看天堂av | 最新中文字幕av专区 | 无码人妻精品一区二区三区不卡 | 嫩草视频在线播放 | 少妇淫片 | 黄网在线观看视频 | 久久久久亚洲av无码麻豆 | 韩国av免费在线 | 久久日视频 | 色妹子综合 | 久久亚洲无码视频 | 久久亚洲一区二区三区四区 | 波多野吉衣中文字幕 |