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?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche Problem, die
BoundField
war die Sortierung, wie es sollte, aber dieTemplateField
nicht Art überhaupt.Ich dies geändert:
Zu diesem:
Entfernte ich die
HeaderTemplate
und fügte hinzu, dieHeaderText
imTemplateField
.Stellen Sie sicher, dass Sie angeben, die SortExpression-Eigenschaft auf das Feld Vorlage