Gridview Sortieren mit benutzerdefinierten Vorlage-Felder

Ich kann nicht scheinen, um herauszufinden, wie man meine gridview mit beiden Datenbindung UND
benutzerdefinierte Felder.

Das benutzerdefinierte Feld wie folgt Aussehen:

  <asp:Label ID="lblItems" runat="server" Text='<%# GetItems((int)DataBinder.Eval(Container.DataItem, "ObjectCategoryID"))%>' />

Ruft es für eine Funktion, die zeigt, wie viele Artikel der Kategorie hat.

Die Sortierung für die databounded Bereichen arbeiten perfekt, aber nicht die customfields. Im
auch auf der Suche nach einer generischen Methode, die funktioniert für alle meine gridviews.

Kann mir jemand helfen in die richtige Richtung bitte? Unten ist mein voller customgrid code.

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq;
using System.Collections;

namespace CustomControls
{
    public class CustomGrid : GridView
    {
        public CustomGrid()
        {
              PageIndexChanging += CustomGrid_PageIndexChanging;
        }        

    private string ConvertSortDirectionToSql(SortDirection sortDirection)
    {
        string newSortDirection = String.Empty;

        switch (sortDirection)
        {
            case SortDirection.Ascending:
                newSortDirection = "ASC";
                break;

            case SortDirection.Descending:
                newSortDirection = "DESC";
                break;
        }

        return newSortDirection;
    }  

    protected void CustomGrid_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        this.PageIndex = e.NewPageIndex;
        this.DataBind();
    }

    protected override void OnSorting(GridViewSortEventArgs e)
    {
        DataSet ds = (DataSet)System.Web.HttpContext.Current.Session["Source"];
        DataTable dataTable = ds.Tables[0];

        if (dataTable != null)
        {
            DataView dataView = new DataView(dataTable);


            if ((string)System.Web.HttpContext.Current.Session["Direction"] == "Asc")
            {
                dataView.Sort = e.SortExpression + " " + "ASC";
                System.Web.HttpContext.Current.Session["Direction"] = "Desc";
            }

            else if ((string)System.Web.HttpContext.Current.Session["Direction"] == "Desc")
            {
                dataView.Sort = e.SortExpression + " " + "DESC";
                System.Web.HttpContext.Current.Session["Direction"] = "Asc";
            }

            else
            {
                dataView.Sort = e.SortExpression + " " + "ASC";
                System.Web.HttpContext.Current.Session["Direction"] = "Desc";
            }

            this.DataSource = dataView;
            this.DataBind();
        }
    }

    protected override void OnInit(System.EventArgs e)
    {
        this.AllowSorting = true;
        this.AllowPaging = true;
        this.PagerSettings.Mode = PagerButtons.NumericFirstLast;
        this.AutoGenerateColumns = false;
        this.CssClass = "gv";
        this.RowStyle.CssClass = "gvRow";
        this.AlternatingRowStyle.CssClass = "gvAlternateRow";
        this.HeaderStyle.CssClass = "gvHeader";
        this.GridLines = GridLines.None;
        this.PagerStyle.CssClass = "gvPager";
        this.EmptyDataText = "<div style=\"width:100%;text-align:left;\">No data found</div>";
    }
}
  • Können Sie eine aspx-code von diesem gridview?
InformationsquelleAutor Mark | 2009-10-20
Schreibe einen Kommentar