Avatar billede spottie Nybegynder
05. marts 2006 - 15:59 Der er 1 kommentar og
1 løsning

Vedr. spørgsmål til fejl i kolonne i datagrid?

Goddag eksperter

Jeg har fundet denne funktion:
private int LongestField (DataSet ds, string TableName, string ColumnName)
{
int maxlength = 0;
int tot = ds.Tables[TableName].Rows.Count;
string straux = "";
int intaux = 0;

Graphics g = dataGrid1.CreateGraphics();

// Take width one balnk space to add to the new width to the Column
int offset = Convert.ToInt32(Math.Ceiling(g.MeasureString(" ", dataGrid1.Font).Width));

for (int i=0; i<tot; ++i)
{
straux =  ds.Tables[TableName].Rows[i][ColumnName].ToString();

// Get the width of Current Field String according to the Font
intaux = Convert.ToInt32(Math.Ceiling(g.MeasureString(straux, dataGrid1.Font).Width));
if (intaux > maxlength)
{
maxlength = intaux;
}
}// End of For Loop

return maxlength + offset;
}

og sat den ind i min kode således:
private void button17_Click(object sender, System.EventArgs e)
{
//Min conn string virker men er ikke med i eksemplet
string query = "SELECT a_id AS ID, a_navn AS Navn, a_loen AS Lon, af_navn AS Afdeling FROM ansat, afdeling WHERE a_afdeling=af_id";
           
MySqlDataAdapter adapter = new MySqlDataAdapter(query,conn);
           
DataSet ds = new DataSet();
DataView dv = new DataView();
                       
adapter.Fill(ds);

int newwidth = LongestField(ds, "ansat", "Navn");

// Create new Table Style
DataGridTableStyle ts = new DataGridTableStyle();
dataGrid1.TableStyles.Clear();
dataGrid1.TableStyles.Add(ts);

// Assign New Width to DataGrid column
dataGrid1.TableStyles[0].GridColumnStyles["Navn"].Width = newwidth;

dataGrid1.DataSource = dv;
dataGrid1.ReadOnly = true;
}

Men når jeg køre programmet og det stykke her hvor koden fra funktionen indgår får jeg følgende fejl:
Additional information: Objektreferencen er ikke indstillet til en forekomst af et objekt.

Hvordan får jeg det til at virke således at den tilpasser bredden på den enkelte kollone i datagrid ud fra hvad den max længde er ud fra funktionen, uden at få den der fejl jeg får?

Håber nogen kan hjælpe.

Vh spottie
Avatar billede bitsch Nybegynder
05. marts 2006 - 18:18 #1
Hvis du har mulighed for at anvende det nye DataGridView i stedet for DataGrid, så skal du blot sætte en property for at opnå samme resultat.
Avatar billede spottie Nybegynder
07. marts 2006 - 14:43 #2
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester