Ordinare le righe di un Datagrid in base ad una colonna
<%@ Page Language="c#" Debug="true" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<HTML>
<HEAD>
<script language="c#" runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
if (!Page.IsPostBack)
LoadDatabase();
}
private void OrdinaPerCampo(Object sender, DataGridSortCommandEventArgs e)
{
ViewState["campo"] = e.SortExpression;
if (ViewState["direzione"] == null || ViewState["direzione"].ToString() == "DESC")
ViewState.Add("direzione", "ASC");
else
ViewState["direzione"] = "DESC";
LoadDatabase();
}
private void LoadDatabase()
{
OleDbConnection dbConn;
OleDbDataAdapter myAdapter;
string sqlCmd;
string strConn;
DataSet oDataSet = new DataSet();
strConn =
"Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + Server.MapPath("database/utenti.mdb") + ";" +
"Persist Security Info=False";
sqlCmd =
"SELECT " +
" nome, " +
" cognome, " +
" email " +
" FROM utenti";
if (ViewState["direzione"] != null)
sqlCmd += " ORDER BY " + ViewState["campo"] + " " + ViewState["direzione"];
dbConn = new OleDbConnection(strConn);
try
{
myAdapter = new OleDbDataAdapter(sqlCmd, dbConn);
myAdapter.Fill(oDataSet, "utenti");
MyDataGrid.DataSource = oDataSet.Tables[0].DefaultView;
MyDataGrid.DataBind();
}
finally
{
dbConn.Close();
}
}
</script>
</HEAD>
<body>
<form runat="server" ID="Form1">
<asp:DataGrid id="MyDataGrid" runat="server" AutoGenerateColumns="False" AllowSorting="True" OnSortCommand="OrdinaPerCampo">
<Columns>
<asp:BoundColumn DataField="nome" SortExpression="nome" HeaderText="nome" />
<asp:BoundColumn DataField="cognome" SortExpression="cognome" HeaderText="cognome" />
<asp:BoundColumn DataField="email" SortExpression="email" HeaderText="email" />
</Columns>
</asp:DataGrid>
</form>
</body>
</HTML>
Scarica il Codice...
Stampa la pagina