Announcement

Collapse
No announcement yet.

Linq query zum sortieren im GridView

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Linq query zum sortieren im GridView

    Hi,

    ich habe mich neu mit LINQ query beschäftigt um über DataContext schnell Daten im GridView anzuzeigen und zu bearbeiten.
    Da ich mein Query in der CodeBehind Datei halten will erzeuge ich die var Query manuell und nicht über den LinqDataSource-Designer.

    Das funktioniert einwandfrei im GridView und DetailView für Neu, Ändern, Delete und Paging.
    Aber für Sorting finde ich keine Lösung nachdem ich SortExpression und SortDirection ermittelt habe um sie im Linq-Query unterzubringen.

    private string GridViewSortDirection{
    get{return ViewState["SortDirection"] as string ?? "ASC";}
    set{ViewState["SortDirection"] = value;}
    }

    private string GridViewSortExpression{
    get{return ViewState["SortExpression"] as string ?? string.Empty;}
    set{ ViewState["SortExpression"] = value;}
    }

    protected void gvMain_Sorting(object sender, GridViewSortEventArgs e)
    {
    GridViewSortExpression = e.SortExpression;
    GridViewSortDirection = e.SortDirection.ToString();
    int pageIndex = gvMain.PageIndex;
    db = new CorydorasDataContext();
    var FiArtsQuery = from p in db.FiArts
    where p.Name.StartsWith(txtSuch.Text)
    // orderby p.Name ascending
    orderby p.Name descending
    select p;
    gvMain.DataSource = FiArtsQuery;
    gvMain.DataBind();
    gvMain.PageIndex = pageIndex;
    }

    orderby p.Name ascending
    orderby p.xxx yyyyy

    Hat jemand eine Idee wie so etwas zu lösen ist?
    Vielen Dank

    Rudolf

  • #2
    Hallo,

    im Verzeichnis C:\Programme\Microsoft Visual Studio 9.0\Samples\1033 befindet sich das ZIP-Archiv CSharpSamples.zip, in der u.a. die Solution LinqSamples enthalten ist. Dort wird im Projekt DynamicQuery.csproj der Aufruf von dynamischen Abfragen demonstriert und auf der Seite Dynamic Expressions.html beschrieben. Es gibt mehrere Alternativen, wobei eine davon (der Rückgriff auf die Extension Method OrderBy) so aussieht:

    Code:
         Northwind db = new Northwind(connString); 
         var query =
             db.Customers.Where("City == @0 and Orders.Count >= @1", "London", 10).
             OrderBy("CompanyName").
             Select("New(CompanyName as Name, Phone)");
    Das Beispiel kann so erweitert werden:

    Code:
               string sOrder = "CompanyName DESC";
                var query =
                    db.Customers.Where("City == @0 and Orders.Count >= @1", "London", 10).
                    OrderBy(sOrder).
                    Select("New(CompanyName as Name, Phone)");
    Alternativ kann man auch die DataContext-Methode ExecuteQuery nutzen, um die bereits als Zeichenkette fertig formulierte SELECT-Abfrage auszuführen ;-)

    Comment

    Working...
    X