Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di evil80
    Registrato dal
    May 2001
    Messaggi
    321

    come ordinare i campi di un datagtrid

    ciao,
    ho creato delle DataColumn e le ho aggiunte ad un dataTable.
    Ho associato il dataTable al Datasource del Datagrid.
    Gestisco l'evento di ordinamento del DataGrid,e in questo metodo definisco un DataView che avvolge il dataTable.
    Sfruttando la proprietà Sort del DataView e il secondo argomento "e",voglio riuscire ad ordinare i dati del dataGrid ma ottengo sempre l'errore "Impossibile trovare la ColumnX" dove X è il numero della colonna che clicco per l'ordinamento.

    Ecco il codice :

    codice:
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    
    namespace QuellocheCerco
    {
    	/// <summary>
    	/// Summary description for WebForm1.
    	/// </summary>
    	public class WebForm1 : System.Web.UI.Page
    	{
    		protected System.Web.UI.WebControls.TextBox txtRagSoc;
    		protected System.Web.UI.WebControls.DropDownList cmbRegione;
    		protected System.Web.UI.WebControls.DropDownList cmbProvincia;
    		protected System.Web.UI.WebControls.DropDownList cmbLocalita;
    		protected System.Web.UI.WebControls.TextBox txtZona;
    		protected System.Web.UI.WebControls.DropDownList cmbSegnalato;
    		protected System.Web.UI.WebControls.Button Button1;
    		protected System.Web.UI.WebControls.Label lblRisultati;
    		protected System.Web.UI.WebControls.DropDownList cmbStelle;
    		protected System.Data.OleDb.OleDbConnection cn;
    		protected System.Web.UI.WebControls.DataGrid mioDataGrid;
    
    		private System.Data.DataSet risultati;
    		private System.Data.DataTable dt=new System.Data.DataTable();
    		private System.Data.DataColumn Column1=new System.Data.DataColumn("Column1");
    		private System.Data.DataColumn Column2=new System.Data.DataColumn("Column2");
    		private System.Data.DataColumn Column3=new System.Data.DataColumn("Column3");
    		private System.Data.DataColumn Column4=new System.Data.DataColumn("Column4");
    		
    
    		private void Page_Load(object sender, System.EventArgs e)
    		{
    			lblRisultati.Visible=false;
    			if(!IsPostBack==true)
    			{
    				
    				try
    				{
    					cn.ConnectionString=MyGlobal.cnString;
    					System.Data.OleDb.OleDbDataAdapter da=new System.Data.OleDb.OleDbDataAdapter("Select * from Regioni Order by Descrizione",cn);
    					
    					System.Data.DataSet ds=new System.Data.DataSet();
    
    					cn.Open();
    					da.Fill(ds,"Regioni");
    
    					//popolo la combo delle regioni
    					cmbRegione.DataSource=ds.Tables["Regioni"];
    					cmbRegione.DataValueField="IDRegione";
    					cmbRegione.DataTextField="Descrizione";
    					cmbRegione.DataBind();
    					cmbRegione.Items.Insert(0,"Non specificare una regione...");
    
    					da=new System.Data.OleDb.OleDbDataAdapter("Select * from Segnalato",cn);
    					da.Fill(ds,"Segnalato");
    
    					cmbSegnalato.DataSource=ds.Tables["Segnalato"];
    					cmbSegnalato.DataValueField="IDSegnalato";
    					cmbSegnalato.DataTextField="Descrizione";
    					cmbSegnalato.DataBind();
    
    				}
    				catch
    				{
    					
    				}
    				finally
    				{
    					cn.Close();
    					cn.Dispose();
    				}
    			}
    		}
    
    		#region Web Form Designer generated code
    		override protected void OnInit(EventArgs e)
    		{
    			//
    			// CODEGEN: This call is required by the ASP.NET Web Form Designer.
    			//
    			InitializeComponent();
    			base.OnInit(e);
    		}
    		
    		/// <summary>
    		/// Required method for Designer support - do not modify
    		/// the contents of this method with the code editor.
    		/// </summary>
    		private void InitializeComponent()
    		{    
    			this.cn = new System.Data.OleDb.OleDbConnection();
    			this.cmbRegione.SelectedIndexChanged += new System.EventHandler(this.cmbRegione_SelectedIndexChanged);
    			this.cmbProvincia.SelectedIndexChanged += new System.EventHandler(this.cmbProvincia_SelectedIndexChanged);
    			this.Button1.Click += new System.EventHandler(this.Button1_Click);
    			this.mioDataGrid.SortCommand += new System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.mioDataGrid_SortCommand);
    			this.Load += new System.EventHandler(this.Page_Load);
    
    		}
    		#endregion
    
    		private void cmbRegione_SelectedIndexChanged(object sender, System.EventArgs e)
    		{
    			try
    			{
    				MyGlobal.IDRegioneCorrente=int.Parse(cmbRegione.SelectedItem.Value);
    			}
    			catch
    			{}
    
    			if(cmbRegione.SelectedIndex!=0)
    			{
    				MyCombo.RiempiCombo(cmbProvincia,MyGlobal.IDRegioneCorrente,"Provincie","FKIDRegione","IDProvincia","Descrizione");
    			}
    			else
    			{
    				cmbProvincia.Items.Clear();
    				cmbLocalita.Items.Clear();
    				
    				cmbProvincia.Items.Insert(0,"Non specificare una provincia");
    				cmbLocalita.Items.Insert(0,"Non specificare una località");
    			}
    		}
    
    		private void cmbProvincia_SelectedIndexChanged(object sender, System.EventArgs e)
    		{
    			try
    			{
    				MyGlobal.IDProvinciaCorrente=int.Parse(cmbProvincia.SelectedItem.Value);
    			}
    			catch
    			{}
    
    			if(cmbProvincia.SelectedIndex!=0)
    			{
    				MyCombo.RiempiCombo(cmbLocalita,MyGlobal.IDProvinciaCorrente,"Localita","FKIDProvincia","IDLocalita","Descrizione");
    			}
    			else
    			{
    				cmbLocalita.Items.Clear();
    				cmbLocalita.Items.Insert(0,"Non specificare una località...");
    			}
    		}
    
    		private void Button1_Click(object sender, System.EventArgs e)
    		{
    			string query="";
    			query="select * from Hotel where 1=1";
    			string where="";
    
    
    			//Inizio di costruzione della query parametrica...
    			if(txtRagSoc.Text.Length!=0)
    			{
    				where=" and Ragsoc Like '%" + txtRagSoc.Text + "%'";
    			}
    
    			if(cmbRegione.SelectedIndex!=0)
    			{
    				where=where + " and FKIDRegione=" + int.Parse(cmbRegione.SelectedItem.Value);
    			}
    
    			if(cmbProvincia.SelectedIndex!=0)
    			{
    				where=where + " and FKIDProvincia=" + int.Parse(cmbProvincia.SelectedItem.Value);
    			}
    
    			if(cmbLocalita.SelectedIndex!=0)
    			{
    				where=where + " and FKIDLocalita=" + int.Parse(cmbLocalita.SelectedItem.Value);
    			}
    
    			if(txtZona.Text.Length!=0)
    			{
    				where=where + " and zone Like '%" + txtZona.Text +"%'";
    			}
    
    			if(cmbSegnalato.SelectedIndex!=0)
    			{
    				where=where + " and FKIDSegnalato="+ int.Parse(cmbSegnalato.SelectedItem.Value);
    			}
    
    			if(cmbStelle.SelectedIndex!=0)
    			{
    				where=where + " and NStelle="+ int.Parse(cmbStelle.SelectedItem.Value);
    			}
    			
    			query=query + where;
    			RiempiDataGrid(query);
    
    		}
    
    		private void RiempiDataGrid(string query)
    		{
    			System.Data.OleDb.OleDbConnection cn=new System.Data.OleDb.OleDbConnection(MyGlobal.cnString);
    			System.Data.OleDb.OleDbDataAdapter da=new System.Data.OleDb.OleDbDataAdapter(query,cn);
    			risultati=new System.Data.DataSet();
    			
    			dt.Columns.Add(Column1);
    			dt.Columns.Add(Column2);
    			dt.Columns.Add(Column3);
    			dt.Columns.Add(Column4);
    
    
    			System.Data.DataRow nuovaRiga;
    
    			try
    			{
    				cn.Open();
    				da.Fill(risultati,"Hotel");
    			}
    			catch{}
    					
    			foreach(System.Data.DataRow row in risultati.Tables["Hotel"].Rows)
    			{
                    nuovaRiga=dt.NewRow();
    				dt.Rows.Add(nuovaRiga);
    				
    				string testo2Colonna=row["RagSoc"] + "
    " + row["Telefono"];
    				
    				nuovaRiga[Column1]=row["IDHotel"];
    				nuovaRiga[Column2]=testo2Colonna;
    				nuovaRiga[Column3]="Camere: " + row["NCamere"];
    				//nuovaRiga[col4]=row["IDHotel"];
    			}
    
    			mioDataGrid.DataSource=dt;
    			mioDataGrid.DataBind();
    		}
    
    		private void mioDataGrid_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
    		{
    			System.Data.DataView dv=new System.Data.DataView(dt);
    			dv.Sort=e.SortExpression.ToString();
    			mioDataGrid.DataSource=dv;
    			mioDataGrid.DataBind();		
    		}
    	}
    }

    Dove sbaglio ?
    Grazie dell'aiuto.
    Secondo alcuni autorevoli testi di tecnica di aeronautica, il calabrone non può volare, a causa della forma e del peso del proprio corpo in rapporto alla superficie alare.
    Ma il calabrone non lo sa e perciò continua a volare.
    Igor Sikorsky

  2. #2
    Utente di HTML.it L'avatar di evil80
    Registrato dal
    May 2001
    Messaggi
    321
    proprio nessuno sa aiutarmi ?
    Secondo alcuni autorevoli testi di tecnica di aeronautica, il calabrone non può volare, a causa della forma e del peso del proprio corpo in rapporto alla superficie alare.
    Ma il calabrone non lo sa e perciò continua a volare.
    Igor Sikorsky

  3. #3
    usi un manuale? su ASP.NET guida completa se non sbaglio c'è qualcosa ceh far per te

  4. #4
    Utente di HTML.it L'avatar di evil80
    Registrato dal
    May 2001
    Messaggi
    321
    si,ho il libro delle Hoepli ma il problema non è quello.
    Questa parte è corretta,non so se hai letto il mio codice ma non capisco perchè non mi trova le colonne,visto che gli eventi li intercetta lui con il parametro e io non faccio altro che gestirlo.

    Insomma il parametro mi dice che per esempio la Column3 ha sollevato l'evento e poi quando gli dico di ordinare il dataView in base alla Column3 mi dice che non riesce a trovarla,ma come è possibile?me l'ha passato lui !!!
    Come faccio ?

    Grazie 1000.
    Secondo alcuni autorevoli testi di tecnica di aeronautica, il calabrone non può volare, a causa della forma e del peso del proprio corpo in rapporto alla superficie alare.
    Ma il calabrone non lo sa e perciò continua a volare.
    Igor Sikorsky

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.