Avatar billede anders_cp Nybegynder
21. april 2009 - 14:44 Der er 10 kommentarer og
1 løsning

Links /rowbinds i DataGrid

Hej
Nedenstående løsning giver otte links. Link 0 åbner et javascript og link 1-6 åbner en url. Dette giver 7 bokse som aktiveres hver for sig med en sølvgrå farve.



        protected void GridProducts_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                int test = 12;

                for (int i = 1; i < 7; i++ )
                {
                    e.Row.Cells[i].Attributes.Add("style", "cursor:hand");
                    e.Row.Cells[i].Attributes.Add("onmouseover", "this.style.backgroundColor = 'Silver'");
                    e.Row.Cells[i].Attributes.Add("onmouseout", "this.style.backgroundColor = 'White'");
                    e.Row.Cells[i].Attributes.Add("onClick", "window.navigate('Productfamily.aspx?ProductFamilyID=" + test + "')");
                }

                e.Row.Cells[0].Attributes.Add("onmouseover", "this.className='RowHighlight'");
                e.Row.Cells[0].Attributes.Add("onmouseout", "this.className=''");
                e.Row.Cells[0].Attributes.Add("onmousedown", "this.className='RowSelect'");
                e.Row.Cells[0].Attributes.Add("onmouseup", "this.className='RowHighlight'");
                e.Row.Cells[0].ToolTip = "Åbn aktivitet";
                e.Row.Cells[0].Attributes.Add("onclick", "java script:OpenActivity('" + e.Row.Cells[0].Text + "')");
            }
        }

Jeg ønsker mig imidlertid to (og ikke som nu 7) selvstændige links.
Cell[0] = java script:OpenActivity('" + e.Row.Cells[0]......
og cell[1-7] = onClick", "window.navigate('Productfamily.aspx?ProductFamilyID=.......

Følgende giver mig det ønskede resultat - BORTSET FRA at Cell[0] nu åbner både javascriptet OG url'en..

kan nogle hjælpe mig med at finde ud af hvordan jeg får to link med sølvgrå farve ud af det 7 syv bokse?



        protected void GridProducts_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                int test = 12;

                e.Row.Attributes.Add("style", "cursor:hand");
                e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor = 'Silver'");
                e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor = 'White'");
                e.Row.Attributes.Add("onClick", "window.navigate('Productfamily.aspx?ProductFamilyID=" + test + "')");

                e.Row.Cells[0].Attributes.Add("onmouseover", "this.className='RowHighlight'");
                e.Row.Cells[0].Attributes.Add("onmouseout", "this.className=''");
                e.Row.Cells[0].Attributes.Add("onmousedown", "this.className='RowSelect'");
                e.Row.Cells[0].Attributes.Add("onmouseup", "this.className='RowHighlight'");
                e.Row.Cells[0].ToolTip = "Åbn aktivitet";
                e.Row.Cells[0].Attributes.Add("onclick", "java script:OpenActivity('" + e.Row.Cells[0].Text + "')");
            }
        }
Avatar billede Syska Mester
21. april 2009 - 22:51 #1
hmm, uden helt at kunne forstå hvad du mener ...

Har du så ik' en fejl i det sidste med at du smider nogen Attributes på hele din row ( tr ) ... og efterfølgende på en helt cell ( td ) ... som giver at linket i første celle vil aktivere begge links ?

// ouT
Avatar billede anders_cp Nybegynder
21. april 2009 - 23:08 #2
jo, korrekt, jeg får den fejl at begge links bliver åbnet - og det er jo det som er problemet. Jeg ønsker dette (prøver at illustrere det;) ):

--------------------------------------------
AKTIVITET | celle1  celle2 celle3 celle4..7 |
---------------------------------------------

altså klik på aktivitet - åbner en aktivitet.
Klik på celle 1 - 7 åbner et andet link/side
Avatar billede anders_cp Nybegynder
21. april 2009 - 23:10 #3
-----------------------------------------------------------
| AKTIVITET | celle1  celle2 celle3 celle4..7 |
-----------------------------------------------------------
Avatar billede Syska Mester
22. april 2009 - 00:40 #4
Er det så ikke bare et spm om du kan angive dit celle nummer i stedet for at angive hele din row ...

                e.Row.Attributes.Add("style", "cursor:hand");

Her er det jo hele rækken du giver nogen Attributes.

Men du lidt længere nede angiver en enkelt celle:

e.Row.Cells[0].ToolTip = "Åbn aktivitet";

Så skal du vel bare bruge e.Rows.Cells[0] og e.Rows.Cells[1] til dine 2 celler hvis jeg har forsået det rigtigt.

// ouT
Avatar billede anders_cp Nybegynder
22. april 2009 - 07:56 #5
jo, det er også det jeg har gjort i mit første kodeeksempel. Problemet er bare (og det har jeg vist ikke fået forklaret), at  ved mouseover ændres formattet

(
e.Row.Cells[i].Attributes.Add("style", "cursor:hand");
e.Row.Cells[i].Attributes.Add("onmouseover", "this.style.backgroundColor = 'Silver'");
e.Row.Cells[i].Attributes.Add("onmouseout", "this.style.backgroundColor = 'White'");

)

kun på den enkelte celle(n) og ikke hele cellerækken (minus aktivitet) celle1..7)
Avatar billede Syska Mester
22. april 2009 - 09:02 #6
??? Hvad mener du med ændres formatet ? Hvad vil du præcis opnå ?

Tegn i paint eller andet program upload til http://imageshack.us/

Jeg har lidt svært ved at gennem skue hvad det gør lige nu og hvad det skal gøre ...

// ouT
Avatar billede anders_cp Nybegynder
22. april 2009 - 12:06 #7
Meget fornemt!
Jeg har dog lavet et word-dokument -med skærmdump, som måske forklarer det bedre ;)

www.henrik-hartig.dk/Temp/buzzzz.doc
Avatar billede Syska Mester
22. april 2009 - 15:51 #8
dvs du vil have en hover effekt på 6 udaf 7 columns ?
Avatar billede anders_cp Nybegynder
22. april 2009 - 16:03 #9
JA præcist
Avatar billede Syska Mester
22. april 2009 - 17:20 #10
hmmm, for mig virker det ikke logisk kun at markere 6 ud af 7 ...

Så hellere markere hele rækken og angive hvilken celle man har musen over ...

Problemet er jo at hover sættes på enten tr, td, th tags. Og jeg kan i hvert fald ikke lige gennemskue hvordan du gør således at kun fjerne en cell fra en hel række.

Så skal du nok over i noget javascript ... og så bliver det noget knapt så pæn kode.
Avatar billede anders_cp Nybegynder
24. april 2009 - 11:26 #11
Hej Buzzzz
Jeg har så måtte lave løsningen (og den er blevet accepteret) med at hvert enkelt felt bliver highligthtet og linket, minus aktivitetsfeltet. Grunden til jeg ikke ønsker aktivitetsfeltet skal aktiveres er at brugeren vil kunne kopiere tallet til andet brug (altså uden at der bliver linket et sted hen).

Jeg lukker spørgsmålet, og takker for din hjælp ;)
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