Hallo, ich habe da mal noch eine Frage. Ich weiß zwar das Gridviews ect. nicht gut sind, aber das ist in das Projekt schon eingebaut, und alles zu ändern wäre nun viel zu umständlich.
Ich habe eine Spalte namens "Fett" wo die Fettwerte der Artikel angegeben sind. Wenn ich n un auf "Fett" drücke werden alle Artikel aufsteigend nach dem Fettwert sortiert, es soll aber Absteigend Sortiert werden, wie mache ich das?
mfg
Peter Bucher
04.08.2008, 18:15
Hallo Durst
Wie kommst du darauf?
Nicht in allen Fällen ist das GridView optimal am Platz, vielfach ist ein Repeater gescheiter.
Zu deinem Problem, schau dir mal den <GridView>.Sorting Event an:
- http://msdn.microsoft.com/de-de/library/system.web.ui.webcontrols.gridview.sorting(VS.80).aspx
Gruss Peter
Vielen Dank, hab es hinbekommen, leider nicht mit der Hilfe des Links.
Ich habe noch eine weitere Frage an die Community , wenn ich per GridView Sortiere und z.b. wie in den oben genannten beispiel nach den Fettwerten Sortieren lasse, wie kann ich auslesen, dass ich nach "Fett" sortiert habe? also ich will entweder die ID oder den Index der Spalte (column) in einer Variable stehen haben.
mfg
Peter Bucher
05.08.2008, 16:57
Hallo Durst
Vielen Dank, hab es hinbekommen, leider nicht mit der Hilfe des Links.
Schön, und wie hast du es gelöst?
Ich habe noch eine weitere Frage an die Community , wenn ich per GridView Sortiere und z.b. wie in den oben genannten beispiel nach den Fettwerten Sortieren lasse, wie kann ich auslesen, dass ich nach "Fett" sortiert habe? also ich will entweder die ID oder den Index der Spalte (column) in einer Variable stehen haben.
Wie arbeitest du derzeit, zeig mal etwas Code.
Gruss Peter
Hallo,
so hab ich es gelöst:
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
string sortExpression = e.SortExpression;
if (rdo_sort.SelectedIndex == 0 )
{
ZustandDerSortierung = SortDirection.Descending;
SortGridView(sortExpression, "DESC");
}
else if (rdo_sort.SelectedIndex == 1)
{
ZustandDerSortierung = SortDirection.Ascending;
SortGridView(sortExpression, "ASC");
}
} private void SortGridView(string sortExpression, string Sort_Richtung)
{
DataTable dt = DatenLaden().Tables[0];
DataView dv = new DataView(dt);
dv.Sort = sortExpression + " " + Sort_Richtung;
GridView1.DataSource = dv;
GridView1.DataBind();
}
hier werden die Daten aus der Datenbank ausgelesen und in das GridView eingetragen:
private DataSet DatenLaden()
{
SqlConnection SQL_Verbindung = new SqlConnection(DataClass.ConnectString); //Die Verbindung zur SQL Datenbank mit dem String aus der Web.config
SqlDataAdapter ad = new SqlDataAdapter(); //Neues Objekt der SqlDataAdapterklasse erstellen
//Ein SqlDataAdapter ist eine Verbindung zwischen dem Steuerelement und der Datenbank
SqlCommand sql_qry = new SqlCommand("SELECT DISTINCT CASE WHEN B.Bewertung IS NULL THEN 0 ELSE B.Bewertung END AS Bewertung, A.Artnr, A.Bezei, A.Bezei_Lang, Round(A.Fett,2) as Fett, Round(A.Eiweiss,2) as Eiweiss, Round(A.Kohlenhydrate,2) as Kohlenhydrate, A.GesEinwaage, A.FleischEinwaage, A.EKEinheit, A.EKEinheit_Inhalt, A.Basiseinheit, A.EKPreis, A.Schwein, A.Fisch, A.Rind, A.Vollkost, A.Leichtekost, A.Neu, A.GebindePreis, A.EinzelPreis, A.ImageURL, A.PRL_Liste, A.Diaet, A.Piccolino, B.Benutzer FROM VArtikel AS A INNER JOIN Bewertungen AS B ON A.Artnr = B.ArtNr WHERE (A.EinzelPreis <= 3.78) AND (B.Benutzer = @Benutzer OR B.Benutzer IS NULL) AND (A.Artnr BETWEEN @VonParam AND @BisParam) AND (A.Bezei LIKE N'%' + RTrim(@Filter) + N'%') UNION SELECT DISTINCT 0 AS Bewertung, A.Artnr, A.Bezei, A.Bezei_Lang, Round(A.Fett,2) as Fett, Round(A.Eiweiss,2) as Eiweiss , Round(A.Kohlenhydrate,2) as Kohlenhydrate, A.GesEinwaage, A.FleischEinwaage,A.EKEinheit, A.EKEinheit_Inhalt, A.Basiseinheit, A.EKPreis, A.Schwein, A.Fisch, A.Rind, A.Vollkost, A.Leichtekost, A.Neu, A.GebindePreis, A.EinzelPreis, A.ImageURL, A.PRL_Liste, A.Diaet, A.Piccolino, '' AS Expr1 FROM VArtikel AS A WHERE (A.EinzelPreis <= 3.75) AND (Artnr BETWEEN @VonParam AND @BisParam) AND (Artnr NOT IN (SELECT ArtNr FROM Bewertungen AS B WHERE (Benutzer = @Benutzer))) AND (A.Bezei LIKE N'%' + RTrim(@Filter) + N'%') OR (A.Bezei_Lang LIKE N'%' + Rtrim(@Filter)+ N'%') AND (A.EinzelPreis <= 3.75) AND (Artnr BETWEEN @VonParam AND @BisParam) AND (Artnr NOT IN (SELECT ArtNr FROM Bewertungen AS B WHERE (Benutzer = @Benutzer))) ORDER BY Bewertung DESC, A.Artnr,A.Einzelpreis", SQL_Verbindung);
//C# Variablen in den SQL Select festlegen
sql_qry.Parameters.Add(new SqlParameter("@vonparam", SqlDbType.VarChar, 255)).Value = "0000";
sql_qry.Parameters.Add(new SqlParameter("@bisparam", SqlDbType.VarChar, 255)).Value = "9999";
sql_qry.Parameters.Add(new SqlParameter("@Benutzer", SqlDbType.VarChar, 255)).Value = Environment.UserName.ToString();
sql_qry.Parameters.Add(new SqlParameter("@Filter", SqlDbType.VarChar, 255)).Value = edFilter.Text;
ad.SelectCommand = sql_qry; //Der SqlDataAdapter soll sql_qry absenden
DataSet ds = new DataSet(); //Erstellt ein Objekt der Klasse DataSet
ad.Fill(ds); //Füllt die Daten aus dem SqlDataAdapter in das DataSet 'ds'
GridView1.DataSource = ds; //Die Daten werden aus dem DataSet geladen
GridView1.DataBind(); //Bindet die Daten ein und zeigt sie an
return ds; //sollte glaub ich jeder selber verstehen :P
}und hier is das GridView im ASP
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AutoGenerateColumns="False" CellPadding="4" OnSorting="GridView1_Sorting"
DataKeyNames="Artnr" ForeColor="#333333"
GridLines="None" AllowSorting="True" PageSize="<%#AnzahlProPage%>"
onpageindexchanging="GridView1_PageIndexChanging">
<PagerSettings PageButtonCount="15" Position="TopAndBottom" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<Columns>
<asp:TemplateField HeaderText="Menüs" SortExpression="Benutzer">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Benutzer") %>'></asp:TextBox>
</EditItemTemplate>
<AlternatingItemTemplate>
<table style="width: 600px">
<tr>
<td style="width: 152px; height: 152px">
<asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("ImageURL") %>' Height="150px" Width="150px" BorderStyle="Groove" ImageAlign="Middle" OnPreRender="Image1_PreRender" /></td>
<td style="width: 609px; text-align: left;">
<asp:Label ID="ArtnrLabel" runat="server" Font-Bold="True" Font-Size="X-Large" ForeColor="Blue"
Text='<%# Eval("Artnr") %>'></asp:Label>
<asp:Label ID="BezeiLabel" runat="server" ForeColor="#C04000" Text='<%# Eval("Bezei") %>'></asp:Label><br />
<asp:Label ID="Bezei_LangLabel" runat="server" ForeColor="#C04000" Text='<%# Eval("Bezei_Lang") %>'></asp:Label><br />
Gesamteinwaage:
<asp:Label ID="GesEinwaageLabel" runat="server" Text='<%# Eval("GesEinwaage") %>'></asp:Label>
Fleischeinwaage:
<asp:Label ID="FleischEinwaageLabel" runat="server" Text='<%# Eval("FleischEinwaage") %>'></asp:Label><br />
Stückpreis:
<asp:Label ID="EKPreisLabel" runat="server" Font-Bold="True" Font-Size="X-Large"
Font-Underline="True" ForeColor="#C00000" Text='<%# Eval("Einzelpreis", "{0:C}") %>'></asp:Label>
Gebindepreis:
<asp:Label ID="GebindePreisLabel" runat="server" Font-Italic="True" Font-Size="X-Large"
Font-Underline="True" ForeColor="Blue" Style="padding-right: 3px; padding-left: 3px;
border-left-color: lime; border-bottom-color: lime; border-top-color: lime; border-right-color: lime"
Text='<%# Eval("GebindePreis", "{0:C}") %>'></asp:Label><br />
<table cellpadding="4" cellspacing="2" style="font-size: 12pt">
<tr>
<td style="width: 100px">
Bewertung:
<asp:Label ID="Label1" runat="server" BackColor="#FFE0C0" BorderColor="#FF8000" BorderStyle="Outset"
BorderWidth="4px" CssClass="Boxed" Font-Bold="True" Font-Overline="False" Font-Size="X-Large"
Font-Strikeout="False" ForeColor="Red" Text='<%# Eval("Bewertung") %>'></asp:Label>
</td>
<td style="width: 180px; text-align: center">
<asp:Button ID="Button0" runat="server" CommandArgument='<%# Eval("Artnr") %>' OnCommand="Button_Command"
Text="X" Width="20px" Font-Bold="True" ForeColor="Red" /> <asp:Button ID="Button1" runat="server" CommandArgument='<%# Eval("Artnr") %>' OnCommand="Button_Command"
Text="1" Width="20px" />
<asp:Button ID="Button2" runat="server" CommandArgument='<%# Eval("Artnr") %>' OnCommand="Button_Command"
Text="2" Width="20px" />
<asp:Button ID="Button3" runat="server" CommandArgument='<%# Eval("Artnr") %>' OnCommand="Button_Command"
Text="3" Width="20px" />
<asp:Button ID="Button4" runat="server" CommandArgument='<%# Eval("Artnr") %>' OnCommand="Button_Command"
Text="4" Width="20px" />
<asp:Button ID="Button5" runat="server" CommandArgument='<%# Eval("Artnr") %>' OnCommand="Button_Command"
Text="5" Width="20px" /></td>
</tr>
</table>
<strong><span style="font-size: 16pt; color: highlight"></span></strong>
</td>
</tr>
</table>
</AlternatingItemTemplate>
<ItemTemplate>
<table style="width: 600px">
<tr>
<td style="width: 152px; height: 152px">
<asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("ImageURL") %>' Height="150px" Width="150px" BorderStyle="Groove" ImageAlign="Middle" OnPreRender="Image1_PreRender" /></td>
<td style="width: 609px; text-align: left;">
<asp:Label ID="ArtnrLabel" runat="server" Font-Bold="True" Font-Size="X-Large" ForeColor="Blue"
Text='<%# Eval("Artnr") %>'></asp:Label>
<asp:Label ID="BezeiLabel" runat="server" ForeColor="#C04000" Text='<%# Eval("Bezei") %>'></asp:Label><br />
<asp:Label ID="Bezei_LangLabel" runat="server" ForeColor="#C04000" Text='<%# Eval("Bezei_Lang") %>'></asp:Label><br />
Gesamteinwaage:
<asp:Label ID="GesEinwaageLabel" runat="server" Text='<%# Eval("GesEinwaage") %>'></asp:Label>
Fleischeinwaage:
<asp:Label ID="FleischEinwaageLabel" runat="server" Text='<%# Eval("FleischEinwaage") %>'></asp:Label><br />
Stückpreis:
<asp:Label ID="EKPreisLabel" runat="server" Font-Bold="True" Font-Size="X-Large"
Font-Underline="True" ForeColor="#C00000" Text='<%# Eval("Einzelpreis", "{0:C}") %>'></asp:Label>
Gebindepreis:
<asp:Label ID="GebindePreisLabel" runat="server" Font-Italic="True" Font-Size="X-Large"
Font-Underline="True" ForeColor="Blue" Style="padding-right: 3px; padding-left: 3px;
border-left-color: lime; border-bottom-color: lime; border-top-color: lime; border-right-color: lime"
Text='<%# Eval("GebindePreis", "{0:C}") %>'></asp:Label><br />
<table cellpadding="4" cellspacing="2" style="font-size: 12pt">
<tr>
<td style="width: 100px">
Bewertung:
<asp:Label ID="Label1" runat="server" BackColor="#FFE0C0" BorderColor="#FF8000" BorderStyle="Outset"
BorderWidth="4px" CssClass="Boxed" Font-Bold="True" Font-Overline="False" Font-Size="X-Large"
Font-Strikeout="False" ForeColor="Red" Text='<%# Eval("Bewertung") %>'></asp:Label>
</td>
<td style="width: 180px; text-align: center">
<asp:Button ID="Button0" runat="server" CommandArgument='<%# Eval("Artnr") %>' OnCommand="Button_Command"
Text="X" Width="20px" Font-Bold="True" ForeColor="Red" /> <asp:Button ID="Button1" runat="server" CommandArgument='<%# Eval("Artnr") %>' OnCommand="Button_Command"
Text="1" Width="20px" />
<asp:Button ID="Button2" runat="server" CommandArgument='<%# Eval("Artnr") %>' OnCommand="Button_Command"
Text="2" Width="20px" />
<asp:Button ID="Button3" runat="server" CommandArgument='<%# Eval("Artnr") %>' OnCommand="Button_Command"
Text="3" Width="20px" />
<asp:Button ID="Button4" runat="server" CommandArgument='<%# Eval("Artnr") %>' OnCommand="Button_Command"
Text="4" Width="20px" />
<asp:Button ID="Button5" runat="server" CommandArgument='<%# Eval("Artnr") %>' OnCommand="Button_Command"
Text="5" Width="20px" /></td>
</tr>
</table>
<strong><span style="font-size: 16pt; color: highlight"></span></strong>
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="GesEinwaage" HeaderText="Ges. Einwaage" SortExpression="GesEinwaage" DataFormatString="{0} g" >
<ItemStyle Font-Bold="True" Font-Size="X-Large" ForeColor="Green" />
</asp:BoundField>
<asp:BoundField DataField="FleischEinwaage" HeaderText="Fleisch Einwaage" SortExpression="FleischEinwaage" DataFormatString="{0} g" >
<ItemStyle Font-Bold="True" Font-Size="X-Large" ForeColor="DarkSalmon" />
</asp:BoundField>
<asp:BoundField DataField="Fett" HeaderText="Fett" SortExpression="Fett" DataFormatString="{0} g" >
<ItemStyle Font-Bold="True" Font-Size="X-Large" ForeColor="DarkSalmon" />
</asp:BoundField>
<asp:BoundField DataField="Kohlenhydrate" HeaderText="Kohlenhydrate" SortExpression="Kohlenhydrate" DataFormatString="{0} g" >
<ItemStyle Font-Bold="True" Font-Size="X-Large" ForeColor="DarkSalmon" />
</asp:BoundField>
<asp:BoundField DataField="Eiweiss" HeaderText="Eiweiss" SortExpression="Eiweiss" DataFormatString="{0} g" >
<ItemStyle Font-Bold="True" Font-Size="X-Large" ForeColor="DarkSalmon" />
</asp:BoundField>
</Columns>
<SelectedRowStyle BackColor="#E2DED6" ForeColor="#333333" Font-Bold="True" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<EditRowStyle BackColor="#999999" />
</asp:GridView>
mfg
Hi, ich habe es schon herausgefunden wie es geht.
hier der Code:
static public int GetColumnIndexByDBName(GridView GridView1, String ColumnText)
{
System.Web.UI.WebControls.BoundField DataColumn;
for (int Index = 0; Index < GridView1.Columns.Count; Index++)
{
DataColumn = GridView1.Columns[Index] as System.Web.UI.WebControls.BoundField;
if (DataColumn != null)
{
if (DataColumn.DataField == ColumnText)
return Index;
}
}
return 0;
}
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
string sortExpression = e.SortExpression;
if (rdo_sort.SelectedIndex == 0)
{
ZustandDerSortierung = SortDirection.Descending;
SortGridView(sortExpression, "DESC");
}
else if (rdo_sort.SelectedIndex == 1)
{
ZustandDerSortierung = SortDirection.Ascending;
SortGridView(sortExpression, "ASC");
}
string ColumnName = e.SortExpression;
int ColumnIndex = GetColumnIndexByDBName(sender as GridView, ColumnName);
// if (ColumnIndex == -1) ColumnIndex = 0;
MessageBox.Show(GridView1.Columns[ColumnIndex].HeaderText);
}
mfg
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.