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

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

主站蜘蛛池模板: xxx性欧美| 欧美一性一交 | 爱爱视频在线看 | 蜜桃色av| 成全世界免费高清观看 | 欧美日韩一区二区电影 | av夜夜操 | 加勒比成人av | 人妻人人澡人人添人人爽 | 日日爱99 | 美女色诱男人激情视频 | 色香蕉av| 黄色片网站在线播放 | 4虎最新网址 | 五月天久久婷婷 | 免费观看视频在线观看 | 卡一卡二视频 | 国产日韩欧美视频在线 | 成人深夜网站 | 国产精品久久久久久久久借妻 | 亚洲成人aaa | 丁五月 | 久久免费视频3 | 成人免费黄色大片v266 | 亚洲精品伊人 | 久久久久久久久久99 | 欧美一区二区三区激情啪啪 | 精品国产精品 | 99视频久久 | 日韩成人在线观看视频 | 永久av网站| 91精品美女 | 色咪咪网站 | av一级免费 | 无码人妻aⅴ一区二区三区玉蒲团 | 老熟妇仑乱一区二区视频 | 日本电影一区二区三区 | 亚洲最大的成人网 | 九热在线 | 亚洲色图另类图片 | 色综合亚洲 | 日韩av电影网 | av视觉盛宴 | 99无码熟妇丰满人妻啪啪 | 久久3p| www.玖玖玖 | 日本后进式猛烈xx00动态图 | 久久久久无码国产精品一区 | 欧美黄色片 | 人人爽久久涩噜噜噜网站 | 亚洲不卡一区二区三区 | 婷婷激情小说网 | 亚洲一区二区三区91 | 日本a级黄 | 久久一| 蛇女欲潮性三级 | 青春草网站 | jzzijzzij亚洲成熟少妇 | 99在线国产 | 菠萝菠萝蜜网站 | 欧美精产国品一二三 | 亚洲精品午夜国产va久久成人 | 国产91嫩草 | 久久麻豆av | 黄色国产视频 | 日本精品一二三区 | 国产白丝av | av在线手机观看 | 男男巨肉啪啪动漫3d | 香蕉在线观看 | 嫩草影院懂你的影院 | 国产专区一区二区 | 国产精品自拍亚洲 | 成人性生交7777 | 狠狠干狠狠爱 | 上床视频在线观看 | 欧美性猛交xxxxx水多 | 亚洲影院在线播放 | 黑人巨大精品欧美一区免费视频 | 在线播放日韩 | 又黄又爽的免费视频 | 成人在线精品 | 日本特级黄色片 | 亚洲少妇一区二区三区 | 国产高清久久 | 久久香蕉影院 | av中字| 日本成片网| 久久女同 | 午夜影院福利 | 精品视频第一页 | 久久精品99| 日本高清在线观看 | 亚洲涩视频| 欧美精品久久久久性色 | 99re在线视频观看 | 性欧美丰满熟妇xxxx性久久久 | 欧美日韩大片 | 国产精品日日摸夜夜爽 |