查詢資料,GridView點擊標題排序方法

Firebase的資料圖

      后天亟待利用在GridView中點擊標題排序,研讨了半天,終於成功了。在看代碼以前需求說雅培(Nutrilon)點:
      GridView本人有叁个Sort()函数:public virtual void Sort ( string sortExpression,    SortDirection sortDirection)使用上异常有益。但在实质上采纳中,常用的是点击每一列的标题来排序,点击标题会触发:protected void GridView_Sorting(object sender, GridViewSortEventArgs e)事件。从GridViewSort伊夫ntArgs中得以得到SortDirection和SortExpression。不过GridView.Sort()本人也会触发GridView_Sorting(),如果在GridView_Sorting()中调用GridView.Sort()会极度的巡回,直到仓库溢出。這里使用DataView.Sort属性来排序,(Sort方法會觸發Sorting 事件),再重复綁定到GridView上。

图片 1data.png

代碼如下:

連接資料庫

//必須完成Firebase Setup後才能使用//取得Firebase連結FirebaseDatabase database = FirebaseDatabase.getInstance();//Firebase入面邊個目錄DatabaseReference getContactsRef = database.getReference.child("Contacts");

1、在源碼中給GridView中加入AllowSorting屬性

取全方位數據

Query queryRef = getContactsRef; queryRef.addChildEventListener(new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { Log.v("Get",dataSnapshot.toString; } ... });

    //1、在源碼的GridView中参预AllowSorting="true"    
    <asp:GridView ID="gvData" runat="server"  AllowSorting="true">
    </asp:GridView>

Output
V/dataSnapshot: DataSnapshot { key = 1, value = {sex=male, name=Wing, age=19} }V/dataSnapshot: DataSnapshot { key = 2, value = {sex=male, name=Ray, age=21} }V/dataSnapshot: DataSnapshot { key = 3, value = {sex=female, name=May, age=20} }

2、    ClbComunication.clsComunication類中定義了一個屬性,用於暫存從數據庫获得的資料:
    注:定義此屬性是因為頁面顯示后,剛才得的資料表(mdatatable)的資料會被清空。所以將获得的資料暫存於類中,便於調用。

過濾

參考資料

方法 用法
limitToFirst() 只回傳前幾筆資料
limitToLast() 只回傳後幾筆資料
startAt() 只回傳大於所指定值的資料
endAt() 只回傳小於所指定值的資料
equalTo() 回傳所指定值的資料

只顯示 age=19

Query queryRef = getContactsRef.orderByChild.startAt.endAt;//Query queryRef = getContactsRef.orderByChild.equalTo;//兩句都得 queryRef.addChildEventListener(new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { Log.v("dataSnapshot",dataSnapshot.toString; } ... });

        /// <summary>
        /// 存放資料DataView屬性的變量
        /// </summary>
        private static DataView dvValue = new DataView();
        /// <summary>
        /// 贮存資料DataView屬性
        /// </summary>
        public static DataView dv
        {
            get { return dvValue; }
            set { dvValue = value; }
        }

Output
V/dataSnapshot: DataSnapshot { key = 1, value = {sex=male, name=Wing, age=19} }

3、將資料放入類的DataView屬性中保留

排序

參考資料

方法 用法
orderByChild() 按路徑下子節點的值做排序
orderByKey() 按節點的 key 做排序
orderByValue() 按路徑下的值做排序
orderByPriority() 按節點所指定的優先順序做排序

历次只好依据一種排序格局做排序。

//根據歲數由小至大排序Query queryRef = getContactsRef.orderByChild; queryRef.addChildEventListener(new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { Log.v("Get",dataSnapshot.toString; } ... });

        //得到資料(BOFactory.bofactory.GetOracleDataTable(mSQL_Selection)為從數據庫获得資料)
        DataTable mdatatable = BOFactory.bofactory.GetOracleDataTable(mSQL_Selection);
        //將须求排序的資料放入DataView中(主要用到此句)
        ClbComunication.clsComunication.dv = new DataView(mdatatable);
        //資料與界面上的GridView綁定
        gvData.DataBind();

Output
//根據歲數由小至大排序V/dataSnapshot: DataSnapshot { key = 1, value = {sex=male, name=Wing, age=19} }V/dataSnapshot: DataSnapshot { key = 3, value = {sex=female, name=May, age=20} }V/dataSnapshot: DataSnapshot { key = 2, value = {sex=male, name=Ray, age=21} }

4、訂閱GridView的Sorting事件

    //GridView的Sorting事件
    gvData.Sorting += new GridViewSortEventHandler(gvData_Sorting);

5、編輯GridView的Sorting事件措施,在那之中使用的GridViewSortDirection屬性的定義如"6"所示

    /// <summary>
    /// GridView的Sorting事件措施
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    void gvData_Sorting(object sender, GridViewSortEventArgs e)
    {
        string sortExpression = e.SortExpression.ToUpper();
        if (GridViewSortDirection ==SortDirection.Ascending)
        {
            GridViewSortDirection = SortDirection.Descending;
            //排序並重新綁定
            bindData(sortExpression, "DESC");
        }
        else if (GridViewSortDirection == SortDirection.Descending)
        {
            GridViewSortDirection = SortDirection.Ascending;
            //排序並重新綁定
            bindData(sortExpression, "ASC");
        }
    }

6、定義排序方向屬性,此属性用viewstate保存每一趟排序的自由化:

    /// <summary>
    /// 排序方向屬性
    /// </summary>
    public SortDirection GridViewSortDirection
    {
        get
        {
            if (ViewState["sortDirection"] == null)
                ViewState["sortDirection"] = SortDirection.Ascending;
            return (SortDirection)ViewState["sortDirection"];
        }
        set
        {
            ViewState["sortDirection"] = value;
        }
    }

7、排序並綁定數據

    /// <summary>
    /// 排序並綁定數據
    /// </summary>
    /// <param name="sortExpression"></param>
    /// <param name="sortDirection"></param>
    protected void bindData(string sortExpression, string sortDirection)
    {
        ClbComunication.clsComunication.dv.Sort = sortExpression;
        if (sortDirection != String.Empty)
        {
            ClbComunication.clsComunication.dv.Sort = sortExpression+" " + sortDirection;
        }
        gvData.DataSource = ClbComunication.clsComunication.dv;
        gvData.DataBind();
    }

别的參考:

本文由华夏彩票发布于编程应用,转载请注明出处:查詢資料,GridView點擊標題排序方法

您可能还会对下面的文章感兴趣: