Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
.NET Framework
Ridisegnare un datagridview
domenica 14 ottobre 2007 - 08.13
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
marcogio
Profilo
| Newbie
18
messaggi | Data Invio:
dom 14 ott 2007 - 08:13
Ho bisogno di ridisegnare un datagridview. Credo di dover inserire il codici in un evento del controllo, ma non riesco ad individuare quale.
Debbo ridisegnare il controllo perchè ho settato
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders;
affinchè il testo potesse essere scritto su più righe. Quando però aggiungo una nuova riga e i dati si riordinano automaticamente, le righe mantengano la stessa altezza originale.
Mi spiego meglio. Se ad esempio all'origine la terza riga era singola e dopo il riordino deve contenere una stringa che necessariamente deve tornare a capo, l'altezza della nuova riga non si modifica.
Ho provato ad inserire il codice per ridisegnare il datagridview nel gestore di evento di un button e funziona. Per questo credo che se individuo l'evento corretto, l'operazione può avvenire inautomatico.
Grazie.
SSUPERPIPPO
Profilo
| Guru
1.095
messaggi | Data Invio:
dom 14 ott 2007 - 09:28
Hai provato con l'evento CellValidated? oppure RowValidated?
Ciao
Alessandro
http://blogs.dotnethell.it/alebadalin
marcogio
Profilo
| Newbie
18
messaggi | Data Invio:
dom 14 ott 2007 - 11:10
Si, ma sembra che non succeda nulla.
Allora ho inserito, dopo rowValidate e dopo cellValidate, un MessageBox.
L'applicazione mostra il messaggio anche quando disegna per la prima volta il datagridview e poi anche quando viene modificato qualcosa, ma non risolve il mio problema.
Hai altro da suggermi? Grazie.
SSUPERPIPPO
Profilo
| Guru
1.095
messaggi | Data Invio:
dom 14 ott 2007 - 16:55
Puoi postare il codice che utilizzi per il refresh?
http://blogs.dotnethell.it/alebadalin
marcogio
Profilo
| Newbie
18
messaggi | Data Invio:
dom 14 ott 2007 - 17:29
code:
-----------------------
namespace WindowsApplication1
{
public partial class Form3 : Form
{
string stringadiconnessione, stringadiquery, stringadiquerytabellaAttivita,stringadiquerytabellaUffici,stringadiquerytabellaFaldoni;
SqlConnection cn;
SqlCommand cmID;
SqlDataAdapter da, databellaAttivita,databellaUffici,databellaFaldoni;
SqlCommandBuilder cb,cbtabellaAttivita;
DataSet ds;
BindingSource bs,bstabellaAttivita,bstabellaUffici,bstabellaFaldoni;
public Form3()
{
InitializeComponent();
}
private void Form3_Load(object sender, EventArgs e)
{
//creo le connessioni, i comandi, i dataadapter ed il dataset
stringadiconnessione = "Data Source=.\\SQLEXPRESS;AttachDbFilename='C:\\Documents and Settings\\marco\\Documenti\\Visual Studio 2005\\Projects\\Ufficio\\Ufficio\\Memorandum.mdf';Integrated Security=True;User Instance=True";
stringadiquery = "SELECT * FROM tabellaPratiche";
stringadiquerytabellaAttivita = "SELECT * FROM tabellaAttivita";
cn = new SqlConnection(stringadiconnessione);
da = new SqlDataAdapter(stringadiquery, cn);
databellaAttivita = new SqlDataAdapter(stringadiquerytabellaAttivita, cn);
ds = new DataSet();
//carico nel dataset i dati delle due tabella
cn.Open();
//da.FillSchema(ds, SchemaType.Source, "dtTabellaPratiche");
da.Fill(ds, "dtTabellaPratiche");
databellaAttivita.FillSchema(ds, SchemaType.Source, "dtTabellaAttivita");
databellaAttivita.Fill(ds, "dtTabellaAttivita");
cn.Close();
//creo una relazione nel dataset
DataColumn colonnaPratiche = ds.Tables["dtTabellaPratiche"].Columns["protocollo"];
DataColumn colonnaAttivita = ds.Tables["dtTabellaAttivita"].Columns["protocollo"];
DataRelation relazione = new DataRelation("PraticheAttivita", colonnaPratiche, colonnaAttivita);
ds.Relations.Add(relazione);
//creo i commandbuilder per tutte e due le tabelle
cb = new SqlCommandBuilder(da);
cbtabellaAttivita = new SqlCommandBuilder(databellaAttivita);
//creo il bindigSource per la tabella master
bs = new BindingSource();
bs.DataSource = ds;
bs.DataMember = "dtTabellaPratiche";
//creo il bindingSource per la tabella figlia
bstabellaAttivita = new BindingSource();
bstabellaAttivita.DataSource = bs;
bstabellaAttivita.DataMember = "PraticheAttivita";
//inserisco i dati, attraverso i bindingSource, nei datagridview
dataGridView1.DataSource = bs;
dataGridView2.DataSource = bstabellaAttivita;
cn.Open();
cmID = new SqlCommand("SELECT @@IDENTITY", cn);
cn.Close();
da.RowUpdated += new SqlRowUpdatedEventHandler(da_RowUpdated);
//tabella uffici
stringadiquerytabellaUffici="SELECT * FROM tabellaUffici";
databellaUffici=new SqlDataAdapter(stringadiquerytabellaUffici,cn);
cn.Open();
databellaUffici.Fill(ds,"dtTabellaUffici");
cn.Close();
bstabellaUffici=new BindingSource();
bstabellaUffici.DataSource=ds;
bstabellaUffici.DataMember="dtTabellaUffici";
DataGridViewComboBoxColumn comboboxcolonna = new DataGridViewComboBoxColumn();
comboboxcolonna.DataPropertyName = "codUfficio";
comboboxcolonna.DataSource = bstabellaUffici;
comboboxcolonna.ValueMember = "id_ufficio";
comboboxcolonna.DisplayMember = "nomeufficio";
comboboxcolonna.Name = "ufficio";
dataGridView1.Columns.Insert(2, comboboxcolonna);
//tabella faldoni
stringadiquerytabellaFaldoni="SELECT * FROM tabellaFaldoni";
databellaFaldoni = new SqlDataAdapter(stringadiquerytabellaFaldoni, cn);
cn.Open();
databellaFaldoni.Fill(ds, "dtTabellaFaldoni");
cn.Close();
bstabellaFaldoni = new BindingSource();
bstabellaFaldoni.DataSource = ds;
bstabellaFaldoni.DataMember = "dtTabellaFaldoni";
//da modificare in modo da cercare la riga corrente e modificare la seconda colonna in base alla prima scelta
//if (dataGridView1.Rows[0].Cells["ufficio"].Value=="626");
DataGridViewComboBoxColumn comboboxcolonnaFaldoni = new DataGridViewComboBoxColumn();
comboboxcolonnaFaldoni.DataPropertyName = "codFaldoni";
comboboxcolonnaFaldoni.DataSource = bstabellaFaldoni;
comboboxcolonnaFaldoni.ValueMember = "id_faldone";
comboboxcolonnaFaldoni.DisplayMember = "nomeFaldone";
comboboxcolonnaFaldoni.Name = "faldone";
dataGridView1.Columns.Insert(3, comboboxcolonnaFaldoni);
DataGridViewCheckBoxColumn colonnaScelta = new DataGridViewCheckBoxColumn();
colonnaScelta.Name = "colonnaScelta";
dataGridView1.Columns.Add(colonnaScelta);
modellaDataGridView1();
modellaColonneAggiunte();
modellaDataGridView2();
bs.Sort = "codUfficio";
}
void modellaDataGridView1()
{
//TUTTE LE COLONNE
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders;
//COLONNA protocollo
dataGridView1.Columns["protocollo"].FillWeight = 25;
dataGridView1.Columns["protocollo"].HeaderText = "Prot.";
dataGridView1.Columns["protocollo"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
//COLONNA pratica
dataGridView1.Columns["pratica"].FillWeight = 100;
//COLONNA codUfficio
dataGridView1.Columns["codUfficio"].Visible=false;
//COLONNA codFaldone
dataGridView1.Columns["codFaldone"].FillWeight = 25;
//COLONNA inizio
dataGridView1.Columns["inizio"].FillWeight = 50;
dataGridView1.Columns["inizio"].DefaultCellStyle.Format = "d";
//COLONNA fine
dataGridView1.Columns["fine"].FillWeight = 50;
}
void modellaColonneAggiunte()
{
//COLONNA inserita Ufficio
dataGridView1.Columns["ufficio"].FillWeight = 50;
//COLONNA inserita faldone
dataGridView1.Columns["faldone"].FillWeight = 50;
//COLONNA inserita colonnaScelta
dataGridView1.Columns["colonnaScelta"].FillWeight = 15;
}
void modellaDataGridView2()
{
//TUTTE LE COLONNE
dataGridView2.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dataGridView2.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
dataGridView2.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders;
//COLONNA numero
dataGridView2.Columns["numero"].FillWeight = 25;
dataGridView2.Columns["numero"].HeaderText = "Num.";
dataGridView2.Columns["numero"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
//COLONNA protocollo
dataGridView2.Columns["protocollo"].FillWeight = 25;
dataGridView2.Columns["protocollo"].HeaderText = "Prot.";
dataGridView2.Columns["protocollo"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
//COLONNA attivita
dataGridView2.Columns["attivita"].FillWeight = 100;
}
private void aggiungiToolStripMenuItem_Click(object sender, EventArgs e)
{
bs.AddNew();
}
private void cancellaToolStripMenuItem_Click(object sender, EventArgs e)
{
bs.RemoveCurrent();
}
private void salvaSenzaUscireToolStripMenuItem_Click(object sender, EventArgs e)
{
salva();
salvatabellaAttivita();
}
void salva()
{
cn.Open();
try
{
da.Update(ds, "dtTabellaPratiche");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
cn.Close();
}
MessageBox.Show("Lavoro terminato", "Attenzione", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
void salvatabellaAttivita()
{
databellaAttivita.Update(ds,"dtTabellaAttivita");
}
void da_RowUpdated(object sender, SqlRowUpdatedEventArgs e)
{
if (e.StatementType == StatementType.Insert)
e.Row["protocollo"] = cmID.ExecuteScalar();
}
private void salvaEdEsciToolStripMenuItem_Click(object sender, EventArgs e)
{
salva();
salvatabellaAttivita();
Close();
}
private void esciSenzaSalvareToolStripMenuItem_Click(object sender, EventArgs e)
{
Close();
}
private void primapraticatoolStripMenuItem1_Click(object sender, EventArgs e)
{
bs.MoveFirst();
}
private void praticaprecedentetoolStripMenuItem2_Click(object sender, EventArgs e)
{
bs.MovePrevious();
}
private void praticasuccessivatoolStripMenuItem3_Click(object sender, EventArgs e)
{
bs.MoveNext();
}
private void ultimapraticatoolStripMenuItem4_Click(object sender, EventArgs e)
{
bs.MoveLast();
}
private void aggiungiToolStripMenuItem1_Click(object sender, EventArgs e)
{
bstabellaAttivita.AddNew();
}
private void cancellaToolStripMenuItem1_Click(object sender, EventArgs e)
{
bstabellaAttivita.RemoveCurrent();
}
private void vaiAllaPrimaPraticaToolStripMenuItem_Click(object sender, EventArgs e)
{
bstabellaAttivita.MoveFirst();
}
private void vaiAllaPraticaPrecedenteToolStripMenuItem_Click(object sender, EventArgs e)
{
bstabellaAttivita.MovePrevious();
}
private void vaiAllultimaPraticaToolStripMenuItem_Click(object sender, EventArgs e)
{
bstabellaAttivita.MoveLast();
}
private void vaiAllaPraticaSuccessivaToolStripMenuItem_Click(object sender, EventArgs e)
{
bstabellaAttivita.MoveNext();
}
private void toolStripButton27_Click(object sender, EventArgs e)
{
}
//questo consente di ridisegnare correttamente il datagridview
private void toolStripButton8_Click(object sender, EventArgs e)
{
modellaDataGridView1();
}
}
}
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !