Avatar billede repsak Nybegynder
16. august 2003 - 22:33 Der er 11 kommentarer og
1 løsning

Speciel datagrid

Hej, jeg har et datadrig som repræsenterer en DB. i DB er der en attribut som kan være yes/no. Hvordan laver jeg så alle de celler med yes grønne og dem med no røde?
Bemærk at det er ikke rækkerne som skal være farvede kun selve cellen
Avatar billede burningice Nybegynder
16. august 2003 - 23:57 #1
du skal ind og lege med din OnDataBind-event, og heri tjekke på data'en der bliver bindet og give cellen den rigige farve alt efter resultatet.
Avatar billede repsak Nybegynder
17. august 2003 - 11:10 #2
nu har jeg:
protected void Page_Init(object sender, EventArgs e){
  DataGrid1.DataBinding += new EventHandler (DataBindHandler);
}

protected void DataBindHandler(object sender, System.EventArgs e){
  Response.Write(sender + " " + e + "<br>");
}

men den udskriver kun 2 gange... hvordan fanger jeg HVER celle så?
Avatar billede burningice Nybegynder
17. august 2003 - 11:21 #3
hehe... nej, det er ikke den event du skal have fat i, men ItemDataBound-eventen (jeg kan aldrig huske de navne, så jeg har lige slået det op i SDK'et).

Der kan du nemlig, gennem DataGridItemEventArgs, få fat i det Item der bliver binded, og på den måde få fat i alt muligt dejligt... og manipulere med det, før det er "for sent". Når ItemDataBound-eventen er fyret af, så er det nemlig ikke muligt at gøre mere da datagriddet nu bliver renderet.
Avatar billede repsak Nybegynder
17. august 2003 - 12:02 #4
Hmmm der er sq sværere end jeg lige troede :-)

protected void DataBindHandler(object sender, DataGridItemEventArgs e){
  Response.Write(((DataRowView)(e.Item.DataItem)).Item[4].ToString());
}

den er vist ikke helt god. Hvordan fanger jeg data i en celle + udskifter indholdet?
Avatar billede burningice Nybegynder
17. august 2003 - 12:09 #5
e.Item.Cells[dincelle].Text = "hej";

mon ikke det kan gøre det?
Avatar billede repsak Nybegynder
17. august 2003 - 12:20 #6
hvorfor lave det let når man kan lave det svært ;-)
mange tak for vejledning... svar
Avatar billede burningice Nybegynder
17. august 2003 - 12:30 #7
så skal du selvfølgelig ikke ændre på teksten, men lave noget i den her retning:

CheckBox cb = e.Item.FindControl("Din checkbox");

if (cb.Checked) {
  e.Item.Cells[dincelle].BackgroundColor = Color.Green
} else {
  e.Item.Cells[dincelle].BackgroundColor = Color.Red
}
Avatar billede repsak Nybegynder
17. august 2003 - 12:56 #8
Jeps - superduper. Ved du hvordan jeg så laver 'min egen' farve?
f.eks "#00ff40"?
Avatar billede burningice Nybegynder
17. august 2003 - 13:02 #9
Hehe... nej, nu du siger det... så ved jeg det ikke lige. Dog vil jeg dog nok anbefale, at definere dine to farver i dit stylesheet, og så istedet bruge denne kode:

if (cb.Checked) {
  e.Item.Cells[dincelle].CssClass = "checked";
} else {
  e.Item.Cells[dincelle].CssClass = "unchecked";
}
Avatar billede burningice Nybegynder
17. august 2003 - 13:02 #10
på den måde bliver dit design bedre adskilt fra koden :)
Avatar billede repsak Nybegynder
17. august 2003 - 13:11 #11
cool burger... så opretter jeg lige et spørgsmål til farven ;-)
Avatar billede burningice Nybegynder
17. august 2003 - 13:14 #12
behøves ikke.. jeg har fundet den.. prøv at søg efter "color html" i din sdk :)

Color dinFarve = ColorTranslator.FromHtml("#00ff40");
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