手把手教你如何扩展GridView之自动排序篇

最新重构源码下载:打造0代码全自动GridView-天具神力     
      
  看到这两天园子里面“强奸”GridView的兄弟们可真不少,自己也手痒,也凑凑热闹,写得好,大家鼓励鼓励,写的不好,大家多多指教。

  首先说说本文要实现的目的,大家都知道GridView支持排序,但是每次排序的时候,都需要给GridView添加OnSorting事件,这么繁琐而费力,作为世界上最最聪明的程序员的我们难道没有抱怨么?废话少说,不才想到了一种解决这个问题的方法,可以让大家一劳永逸。下面就让兄弟我臭摆一下,希望园子里面的高高手,大大牛们给给面子,捧捧场,别取消兄弟。

  首先创建一个GridViewEx的类,并继承GridView,然后添加如下委托

public delegate void BindEventHandler();

我们在使用GridViewEx的时候,就只需要设定DataSetSource属性,这个将限定本扩展组件只支持DataSet类型的数据源,其他类型数据源有兴趣的,大家可以进行扩展,象ArrayList,List<>这些都是可以的。
接下来的工作是为GridViewEx添加OnBind事件,如下:

 

 public event BindEventHandler Bind;
        
public virtual void OnBind()
        
{
            
if (Bind != null)
            
{
                Bind();
                
if (DataSetSource != null)
                
{
                    DataView dv 
= DataSetSource.Tables[0].DefaultView;
                    dv.Sort 
= SortExpressionStr;                  
                    
this.DataSource = dv;

                    
this.DataBind();                }

            }

        }

和下面的属性

 

 public string SortExpressionEx
        
{
            
get
            
{
                
if (ViewState["SortExpressionEx"== null)
                
{
                    
return null;
                }

                
return ViewState["SortExpressionEx"].ToString();
            }

            
set
            
{
                ViewState[
"SortExpressionEx"= value;
            }

        }

经过上面这样简单的改造,您再次使用GridViewEx的时候,在前台页面使用的时候,您只要按照这样的格式就可以了:
<cc1:GridViewEx id="gridViewEx1" OnBind="BindData" runat="server" AllowSorting="True">
  <Columns>
    <ASP:TemplateField HeaderText="序号" SortExpression="ID"><%#Eval(''ID")%></ASP:TemplateField> 
 </Columns>
</cc1:GridViewEx>
 后台只需要添加这样的方法

 

public void BindData()
{
   DataSet ds 
= new DataSet();
   ds 
= //获得DataSet;
   gridView1.DataSetSource = ds;
}

NET技术手把手教你如何扩展GridView之自动排序篇,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。