Ridisegnare un datagridview

domenica 14 ottobre 2007 - 08.13

marcogio Profilo | Newbie

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

Hai provato con l'evento CellValidated? oppure RowValidated?

Ciao

Alessandro


http://blogs.dotnethell.it/alebadalin

marcogio Profilo | Newbie

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

Puoi postare il codice che utilizzi per il refresh?


http://blogs.dotnethell.it/alebadalin

marcogio Profilo | Newbie

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();

}







}
}
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5