12 messaggi dal 15 gennaio 2005
Risolto il problema della data, grazie al vostro sempre presente e istantaneo aiuto, eccovi subito una nuova domanda  ....
Ho sempre lo stesso datagrid su cui ora devo poter effettuare l'ordinamento su 2 campi Data e Importo, sto provando prima per data ecco il codice...ma non funziona:

private void DataGrid1_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
string currentsort =(string) DataGrid1.Columns[2].SortExpression;
string newsort = (string) e.SortExpression;

if( !((currentsort==null || currentsort.Equals("")) && (currentsort.Equals(e.SortExpression))) )
{
newsort += " DESC";
}

DataGrid1.Columns[2].SortExpression=newsort;
bindDataView();
}

private void bindDataView()
{

DataGrid1.DataSource=dataSet11.Tables["Entrate"];
DataGrid1.DataKeyField="IDEntrata";
string currentsort =(string)DataGrid1.Columns[2].SortExpression;

if( !((currentsort==null || currentsort.Equals(""))))
{
DataView dv = dataSet11.Tables["Entrate"].DefaultView;
dv.Sort= currentsort;
DataGrid1.DataSource = dv;

}

DataGrid1.DataBind();

}

Premesso che il datagrid ha allowsort a true,quello che faccio nel DataGrid1_SortCommand è semplicemente recuperare la stringa di ordinamento del campo data e se diversa de e.SortExpression gli aggiungo DESC..in questo modo posso ordinare con un click in ordine DESC e con un altro in ordine CRESC,poi chiamo la funzione bindDataView() che crea e imposta un dataview che dopo assegno come datasource al datagrid e infine chiamo il databind....
PERCHE' NON FUNZIONA???MI SAPETE SUGGERIRE UN MODO MIGLIORE O + FACILE PER EFFETTUARE L'ORDINAMENTO??
GRAZIEEEEEEEEEE

[Mask]
Un metodo molto rapido è quello di usare come data source della griglia una DataView e sfruttare la proprietà Sort per gestire l'ordinamento dei vari item.

Quando viene applicato l'ordinamento (SortCommand), semplicemente basta impostare la proprietà Sort della DataView prima di associare l'oggetto alla proprietà DataSource della griglia.

Ciao, Ricky.

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it
<script runat="server">
private void SortGrid(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e) 
{
DataView dv;
dv = this.GetData();
dv.Sort = e.SortExpression;
this.DataGrid1.DataSource = dv;
this.DataGrid1.DataBind();
}
</script>

<asp:DataGrid id="DataGrid1" OnSortCommand="SortGrid" AutoGenerateColumns="False" AllowSorting="True" runat="server">
<Columns>
<asp:BoundColumn DataField="Importo" SortExpression="Importo" HeaderText="Importo" />
<asp:BoundColumn DataField="Data" HeaderText="Data" SortExpression="Data" DataFormatString="{0:d}" />
</Columns> 
</asp:DataGrid>


Ciao, Ricky.

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it
12 messaggi dal 15 gennaio 2005
E' la stessa cosa che ho fatto anche io nel codice scritto sopra, solo che io prima di creare il dataview faccio un controllo...per il resto è uguale ma non funziona!

[Mask]

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.