Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[ASP.NET] Gridview SortExpression met EntityDataSource

Pagina: 1
Acties:

  • bastv
  • Registratie: September 2005
  • Laatst online: 15-11 00:39
De vraag is simpel maar de oplossing denk ik niet.

Ik heb een gridview met een EntityDataSource.
Deze wil ik laten sorteren op een omschrijving en niet op een ID.

Gridview code:
ASP.NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
<asp:GridView ID="grdvInspections" runat="server" AllowSorting="True" 
    AutoGenerateColumns="False" DataKeyNames="InspectionID" 
    DataSourceID="InspectionsEDS">
<Columns>
    <asp:TemplateField HeaderText="Status" 
    SortExpression="InspectionStatus.Description">
    <ItemTemplate>
        <asp:Label ID="Label1" runat="server" 
        Text='<%# Eval("InspectionStatus.Description") %>'></asp:Label>
    </ItemTemplate>
    </asp:TemplateField>
</Columns>
</asp:GridView>

<%# Eval("InspectionStatus.Description") %> werkt wel.
SortExpression="InspectionStatus.Description" werkt niet.


1 niveau hoger werkt wel SortExpression="InspectionStatusID"

EntityDataSource code:
ASP.NET:
1
2
3
4
5
<asp:EntityDataSource ID="InspectionsEDS" runat="server" 
    ConnectionString="name=MESEntities" DefaultContainerName="MESEntities" 
    EntitySetName="Inspections" 
    Include="InspectionStatus">
</asp:EntityDataSource>

Include="InspectionStatus" is noodzakelijk anders werkt eval ook niet.
Hoe krijg ik de sortering nu ook goed?

foutmelding:
'InspectionStatus.Description' could not be resolved in the current scope or context. Make sure that all referenced variables are in scope, that required schemas are loaded, and that namespaces are referenced correctly., near multipart identifier, line 13, column 1.

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 15-11 12:29

sopsop

[v] [;,,;] [v]

Moet je geen enablesorting=true toevoegen aan je EntityDataSource?

  • bastv
  • Registratie: September 2005
  • Laatst online: 15-11 00:39
sopsop schreef op vrijdag 03 oktober 2008 @ 12:16:
Moet je geen enablesorting=true toevoegen aan je EntityDataSource?
AutoSort = true is default
En sorteren gaat ook goed op ID maar niet 1 niveau dieper op omschrijving.

  • bastv
  • Registratie: September 2005
  • Laatst online: 15-11 00:39
na een weekend feesten en een bak koffie op de maandagmorgen krijg je goede ingevingen :)

SortExpression="InspectionStatus.Description"
moet zijn:
SortExpression="it.InspectionStatus.Description"

het voorvoegsel "it." moet je normaal alleen opgeven bij de EntityDataSource en niet in een gridview.
erg onlogisch maar het werkt wel zo.

Verwijderd

Ik ben geen ASP.NET of SQL expert maar. met EntityDataSource kan je toch hetzelfde als met een SqlDataSource toch? Als dit zo is kan je in de CodeBehind een Query opbouwen en deze in een DataSet stoppen, in deze Query kun je aangeven waarop hij moet sorteren(SORT BY). Vervolgens geef je in de DataSource van je Gridview aan dat hij zijn gegevens uit de dataset moet halen.


Visual Basic .NET:
1
2
3
4
5
6
7
8
9
Dim objConnection As New SqlConnection(connString)
Dim Query As String = "SELECT * FROM table_Name ORDER BY Omschrijving ASC"
Dim Adapter As New SqlDataAdapter(Query, objConnection)
Dim ds As New DataSet
  objConnection.Open()
    Adapter.Fill(ds)
  objConnection.Close()
GridView.DataSource = ds
GridView.Databind()



Hoop dat ik een beetje in de goede richting zit ;)

[ Voor 4% gewijzigd door Verwijderd op 10-10-2008 20:42 . Reden: Databind on GridView ]


  • bastv
  • Registratie: September 2005
  • Laatst online: 15-11 00:39
wat is linq + ado.net entity model dan mooi :)

C#:
1
2
3
4
5
        var query = from i in MESEntities.Inspections 
            orderby i.InspectionStatus.Description 
            select i;
grdvInspections.DataSource = query;
grdvInspections.DataBind();


Dat kan ook maar dan heb je geen voordeel meer van autosort en select en delete events etc.
vandaar dat ik liever met een datasource werk.
Pagina: 1