Hur kan jag få bort, att det visas "null" när det inte finns några poster i en datagrid? Under datagridcolumnstyle finns en egenskap som heter NullText. Tack det ser ju logiskt ut, bara en fråga: Det är som så här en datagrid kan ha flera tablestyles och exemplet säger att du ska använda den första. Hej M. Sand! Hmm. litte rörig kod där (utläses med sydhalländs dialekt).. Du skall ha tack för att du inte ha gett upp, men tyvärr, det lyckas inte. Jag ger mig inte. Här är var jag kunnat mecka till i vb och översatt på plats till c#Datagrid visar null när det inte finns några poster.
Sv: Datagrid visar null när det inte finns några poster.
Saxat från dokumentationen:
<code>
private void SetNullText()
{
DataGridColumnStyle myGridColumn;
myGridColumn = dataGrid1.TableStyles[0].GridColumnStyles[0];
myGridColumn.NullText = "Null Text";
}
</code>
Observera att denna egenskap hänger samman med egenskapen AllowDBNull som finns i tillhörande dataColumn (den i datakällan), vilket är ganska logiskt eller hur??
//Mikael SandSv: Datagrid visar null när det inte finns några poster.
<code>
myGridColumn = dataGrid1.TableStyles[0].GridColumnStyles[0];
</code>
Där nollorna är, är det fälten(cellerna)?Sv: Datagrid visar null när det inte finns några poster.
Till varje TableStyle kan man koppla en eller flera GridColumnStyles, vilket alltså är stilar som gäller kolumner. I detta fall används den första.
Den primära anledningen till att köra med nollorna är dock att det är default att datagridden använder den första stilsamligen och därför slipper vi tala om att den ska använda en annan då det i detta fall enbart är aktuellt med en.
Att nå enskilda kolumner är inte svårare än att du kopplar stilen till en viss kolumn. I detta fall har jag kopplat det till hela datagridden eftersom just det du efterfrågade väl är intressantast att applicera på hela.
//Mikael Sand
Inte nån större pedagogSv: Datagrid visar null när det inte finns några poster.
Jag åker på patrull!
Det kan bero på att jag inte fattar var jag skall lägga in denna.
Jag lade först SetNullText i en egen class.
Jag antog att jag skulle lägga till den innan:
<code>
dataGrid1.TableStyles.Clear();
tableStyle.AlternatingBackColor = Color.GhostWhite;//<-- detta är för att få varannan rad i olika färger
dataGrid1.TableStyles.Add(tableStyle);//<-- detta är för att få olika bred på kolumnerna
SetNullText(); //<-- detta är för att få bort null texten
dataGrid1.DataSource = ds2.Tables["frånArrReg"];
</code>
Jag får inga felmedelande, men det står fortfarande "null" i vissa celler.Sv: Datagrid visar null när det inte finns några poster.
Jag vet inte riktigt hur du har lagt upp det hela. Varför t ex rensa tablestyles först??
(I synnerligen parantes: Jag är faktiskt inte säker på om jag vet om du kör med en datagrid eller en ASPNET datagrid.)
Såhär skulle jag skriva:
<code>
grd.TableStyles[0].GridColumnStyles[0].NullText = "inget värde";
</code>
grd i detta fall vardandes datagridden.
Mer än så kan jag inte säga.
//Mikael SandSv: Datagrid visar null när det inte finns några poster.
Sv: Datagrid visar null när det inte finns några poster.
grd.DataSource = ds;
grd.DataMember = ds.PortData.TableName;
DataGridTableStyle myGridStyle = new DataGridTableStyle();
myGridStyle.MappingName = ds.myTable.TableName;
DataGridTextBoxColumn nameColumnStyle = new DataGridTextBoxColumn;
nameColumnStyle.MappingName = "myColumn"
nameColumnStyle.HeaderText = "Rubrik"
nameColumnStyle.NullText = "Inget värde"
myGridStyle.GridColumnStyles.Add(nameColumnStyle)
grd.TableStyles.Add(myGridStyle)
Ok, så det är mappningar hit och dit som krävs. Resultatet av koden ovan är att trots att jag har 10 kolumner i min datakälla så visas bara en, vilket innebär att man behöver skapa lika många mappningar som du har kolumner.
Någonting säger mig att jag skulle fixa till det hela i datakällan istället.
Jag skulle gjort något i stil med.
foreach row in ds.myTable
if (row(0).isNull)
row(0) = "Inget värde"
next
Nackdelen med det är att det enbart funkar på textfält men med lite ombyggeri av tabellen i datakällan så fixar man det också.
Ofta har i alla fall jag två versioner av dataset baserat på tabeller. Ett dataset som är en direkt representation av tabellen och en som innehåller inlänkad information som t ex namnet på en typ.
//Mikael Sand