c#
  • asp.net
  • gridview
  • sorting
  • templatefield
  • 2009-10-20 25 views 9 likes 
    9

    Kılavuz görünümümü hem veri hem de özel alanlarıyla nasıl sıralayacağımı anlayamıyorum. Özel şablon alanları ile Gridview sıralama

    özel alan

    şuna benzer:

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

    Bu verilen kategori kaç madde gösteren bir fonksiyon için çağırır.

    Veri alanları için sıralama, özel alanlar değil, özel alanlar çalışır. Im tüm tüm kılavuzları için çalışan genel bir yöntem arıyorum.

    Birisi bana doğru yönde yardım edebilir mi lütfen? Aşağıda tam customgrid kodum var.

    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>"; 
        } 
    } 
    
    +0

    Bu kılavuz görünümünde bir aspx kodu gösterebilir misiniz? –

    cevap

    4

    ben aynı sorun vardı şablonu alanında

    <asp:TemplateField HeaderText="Object Category ID" SortExpression="ObjectCategoryID"> 
    <ItemTemplate> 
        <asp:Label ID="lblItems" runat="server" Text='<%# GetItems((int)DataBinder.Eval(Container.DataItem, "ObjectCategoryID"))%>' /> 
    </ItemTemplate> 
    </asp:TemplateField> 
    
    14

    üzerine SortExpression özelliğini belirtmek emin olun BoundField olması gerektiği gibi sıralama, ama TemplateField sıralama hiç yoktu. Buna,

    <asp:TemplateField SortExpression="Category"> 
        <HeaderTemplate>Category</HeaderTemplate> 
        <ItemTemplate>A value</ItemTemplate> 
    </asp:TemplateField> 
    

    :

    Bu değişmiş
    <asp:TemplateField HeaderText="Category" SortExpression="Category"> 
        <ItemTemplate>A value</ItemTemplate> 
    </asp:TemplateField> 
    

    I HeaderTemplate çıkarılır ve TemplateField içinde HeaderText ilave edildi.

    İlgili konular