Avatar billede Kim Neesgaard Seniormester
01. august 2006 - 10:42 Der er 22 kommentarer og
1 løsning

Farvning af menuvalg i datagrid og nulstilling af denne

Jeg har et datagrid med en kolonne editlinks. Når brugeren trykker på et link, så farver jeg cellerne vha OnEditCommand således:

e.Item.Cells(1).BackColor = ColorTranslator.FromHtml("#FFCC00")
e.Item.Cells(2).BackColor = ColorTranslator.FromHtml("#FFCC00")

og det virker fint.

Når brugeren så vælger et andet link, vil jeg gerne neutralisere den forrige farvning og herefter farve det nye valg. Problemet er, at farvningen af de forrige links 'sidder fast'.

Jeg har prøvet lige inden farvningen af linket at bruge datagrid..BackColor = ColorTranslator.FromHtml("#XXXXXX"), men den farver alt ANDET end de celler, der har været valgt. Jeg har også forsøgt mig med OnItemDataBound på forskellig vis, men det virker som om forrige farvninger ikke står til at fjernes.

Hvordan kan man gøre?
Avatar billede snepnet Nybegynder
01. august 2006 - 10:52 #1
Du kan sætte en template ind for hvordan linier der er igang med at blive editeret skal se ud - der kan så du angive farverne.
Mvh
Avatar billede snepnet Nybegynder
01. august 2006 - 10:54 #2
Ikke en template .... En styleangivelse - f.eks.:
<EditRowStyle BackColor="#C0C0C0" />
Mvh
Avatar billede snepnet Nybegynder
01. august 2006 - 10:56 #3
Det går sq godt ... Det er jo et datagrid du benytter, så hedder den:
<EditItemStyle BackColor="#C0C0C0" />
Mvh
Avatar billede Kim Neesgaard Seniormester
01. august 2006 - 12:25 #4
Skal det stå inde mellem asp:datagrid? Der kan jeg ikke få det til at virke.
Avatar billede snepnet Nybegynder
01. august 2006 - 12:35 #5
Visse vasse ... Det burde fungere fint:
<asp:DataGrid ID="grid" runat="server" AutoGenerateColumns="true">
    <EditItemStyle BackColor="Aqua" />
</asp:DataGrid>
Mvh
Avatar billede Kim Neesgaard Seniormester
01. august 2006 - 13:15 #6
Ja - det plejer det jo at ende med, når jeg har forstået det....!! Men indtil det, virker det ikke endnu.

Jeg giver lige alle tags til griddet:

<asp:datagrid id="dgTaskList" Font-Names="Arial" Font-Size="X-Small" runat="server" Width="350px" OnEditCommand="Grid_EditCommand" OnItemDataBound="Grid_ItemDataBound" AllowPaging="True" AutoGenerateColumns="False">
                <EditItemStyle BackColor="Aqua" />
                        <Columns>
                            <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="" CancelText="" EditText="View/Edit"></asp:EditCommandColumn>
                            <asp:BoundColumn DataField="ID" HeaderText="ID no."></asp:BoundColumn>
                            <asp:BoundColumn DataField="ShortDescription" HeaderText="Topic"></asp:BoundColumn>
                        </Columns>
                        <PagerStyle Mode="NumericPages"></PagerStyle>
                    </asp:datagrid>
Avatar billede snepnet Nybegynder
01. august 2006 - 13:20 #7
Og æhh... Du har kommenteret din kode ud ikke?
Mvh
Avatar billede Kim Neesgaard Seniormester
01. august 2006 - 13:30 #8
Nu har jeg på fornemmelsen, at jeg har gjort noget rigtig dumt - hvordan mener du? Griddet og links virker fint.
Avatar billede snepnet Nybegynder
01. august 2006 - 13:43 #9
Du skrev at du havde noget kode der tog hånd om det med farvningen... Tænkte at du måske ikke havde kommenteret den ud. Det er kun <EditItemStyle BackColor="Aqua" /> du skal have. Ikke noget kode.
Mvh
Avatar billede Kim Neesgaard Seniormester
01. august 2006 - 14:05 #10
Jeg misforstod - jeg troede, du mente mine tags! Jeg har udkommenteret koden, der selv farvede, men der er stadig et eller andet galt.
Avatar billede snepnet Nybegynder
01. august 2006 - 14:10 #11
Vil du fortælle mig hvad det er der er galt?
Mvh
Avatar billede Kim Neesgaard Seniormester
01. august 2006 - 15:15 #12
Jeg slog på her: http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.datagrid.edititemstyle.aspx og her ser det ud som om at den kun farver, hvis man redigerer i selve griddet. Jeg fik jo heller ikke skrevet, at når jeg klikker på et link, så redigerer jeg ikke i selve griddet, men aflæser en ID og viser herefter en række oplysninger fra databasen tilhøjre på skærmen, der hører til dette ID. Når man så klikker på et andet link, så viser den andre oplysninger og så var det, at jeg gerne ville have, at man nemt kunne se, hvilke oplysninger, der pt. vises. Kan det ikke være derfor, at det ikke fungerer hos mig?
Avatar billede snepnet Nybegynder
01. august 2006 - 15:30 #13
Nåhh... Jeg troede det var en editeringsting.
Du kan bruge selection istedet, og angive din style i SelectedItemStyle (på samme måde some med den anden).
Mvh
Avatar billede Kim Neesgaard Seniormester
02. august 2006 - 10:03 #14
Undskyld - det skulle jeg jo have skrevet i første hug!! Hvordan 'fanger' jeg, at en bruger klikker, når jeg bruger selection? Ved edit bruger jeg jo OnEditCommand til dette.
Avatar billede snepnet Nybegynder
02. august 2006 - 10:38 #15
Du kan sætte sådan en her ind:
<asp:ButtonColumn CommandName="Select" Text="Select"></asp:ButtonColumn>

Og så den med farven:
<SelectedItemStyle BackColor="Beige" />

Hvis du gerne vil abbonnere på eventet (det er ikke nødvendigt for at se farveskiftet) kan du på selve grid'et angive:
OnSelectedIndexChanged="grid_SelectedIndexChanged"

Og så en handler:
protected void grid_SelectedIndexChanged(object sender, EventArgs e)
{
  // ...
}

Mvh
Avatar billede Kim Neesgaard Seniormester
02. august 2006 - 12:28 #16
Smukt - nu markeres den fint! Men jeg kan så ikke længere aflæse min ID i griddet med 'e.Item.Cells(1).Text' - har du et bud på, hvordan jeg så kan få fat på den (Har prøvet forskelligt med DataGrid.et eller andet, men har ikke kunnet få den ud)?
Avatar billede snepnet Nybegynder
02. august 2006 - 12:42 #17
Du kan få fat i det valget item med:
ditGrid.Items[ditGrid.SelectedIndex];
Mvh
Avatar billede Kim Neesgaard Seniormester
02. august 2006 - 13:51 #18
Den giver mig nummeret i griddet, men jeg vil gerne aflæse værdien i griddet (min ID som jeg bruger til at søge videre med).
Avatar billede snepnet Nybegynder
02. august 2006 - 13:56 #19
Ja men den kode har du jo fra før?!?
e.Item.Cells(1).Text
Du skal jo bare have fat i dit item:
ditGrid.Items[ditGrid.SelectedIndex].Cells(1).Text
Mvh
Avatar billede Kim Neesgaard Seniormester
02. august 2006 - 14:02 #20
Ah - genialt!! Det kan dog sammesættes på mange måder! Du skal endnu en gang have ypperlig tak - både fordi mit problem blev løst og at jeg blev klogere på dette fantastiske værktøj!!
Avatar billede snepnet Nybegynder
02. august 2006 - 14:39 #21
Alletiders :o)
Du får et svar her.
Mvh
Avatar billede Kim Neesgaard Seniormester
02. august 2006 - 14:43 #22
Accepteret på stedet!!!
Avatar billede snepnet Nybegynder
02. august 2006 - 15:08 #23
:o)
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