Avatar billede vint Nybegynder
06. september 2007 - 22:40 Der er 10 kommentarer og
1 løsning

Ændre rækkehøjden i en gridview samt sætte hovereffekt på

Hej.

Jeg har en gridview, der henter data fra en database. Det ser bare totalt dumt ud, da der er plads nok til to rækkers tekst i hver række, og jeg har endnu ikke haft held til at gøre rækkerne mindre ved justering af divers heights parametre.

Hvordan gør jeg det?

Hvordan sætter jeg ligeledes en hover-effekt på rækkerne?
Avatar billede neoman Novice
06. september 2007 - 22:56 #1
Hover ? Hvis du vil vise noget ekstra data ved at holde musen hen over et felt så er der en ret god artikel her: http://aspnet.4guysfromrolla.com/articles/070407-1.aspx, for blot at lave et-eller-andet som at ændre farve ved onmouseover kan du kigge her : http://www.gridviewguy.com/ArticleDetails.aspx?articleID=172
Avatar billede neoman Novice
06. september 2007 - 23:02 #2
Og mht til dit "højde"-problem - hvordan fik du den til det ? Af sig selv plejer den jo at holde en fornuftig højde på cellerne/rækkerne.
Avatar billede vint Nybegynder
06. september 2007 - 23:54 #3
hehe... det er et super godt spørgsmål, for jeg ved det ikke. Synes ikke, at jeg har gjort noget.

Men har oprettet en ny GridView og nu er højden OK igen.

Angående hover-effekten har jeg prøvet at omformulere koden til vb.net og mine linier bliver også en anden farve, når jeg fører musen over dem, men den "nye" farve forsvinder ikke igen.

Dim onmouseoverStyle As String = "this.style.backgroundColor='blue'"
Dim onmouseoutStyle As String = "this.style.backgroundColor='#@BackColor'"
Dim rowBackColor As String

If e.Row.RowType = DataControlRowType.DataRow Then
  If e.Row.RowState = DataControlRowState.Alternate Then
    rowBackColor = gridWebsider.AlternatingRowStyle.BackColor.Name.Remove(0, 2)
  Else
    rowBackColor = gridWebsider.RowStyle.BackColor.Name.Remove(0, 2)
  End If

  e.Row.Attributes.Add("onmouseover", onmouseoverstyle)
  e.Row.Attributes.Add("onmouseout", onmouseoutStyle.Replace("@BackColor", rowBackColor))
End If
Avatar billede neoman Novice
07. september 2007 - 00:15 #4
Det kommer vel an på hvordan din BackColor er defineret - om det er hex eller navn. Du kunne prøve at fjerne .Remove og se om det hjælper.
Avatar billede neoman Novice
11. september 2007 - 19:57 #5
hvordan går det med dette spørgsmål ? Eller er det blot et årligt ritual, jvf: http://www.eksperten.dk/spm/739444 ? :)
Avatar billede vint Nybegynder
11. september 2007 - 21:30 #6
hehe.

Ja, det går lige så godt som sidste år.

Mit problem er stadig ikke løst. Min kode virker ikke korrekt, ligesom tilfældet var sidste år.

Blot for at aflive mulige teorier om, at jeg spammer med mit spørgsmål om hover effekt, er nærig med point eller lignende, så havde jeg problemet sidste år, men fandt aldrig løsningen og droppede det. Nu ville jeg prøve igen - med en ny / anden side, og spurgte igen, men jeg har samme problem.
Avatar billede neoman Novice
11. september 2007 - 21:36 #7
men så må du komme med noget feedback om hvad du har gjort og hvad problemet er, ellers dumper løsningen jo næppe ned fra himlen :)
Avatar billede vint Nybegynder
14. september 2007 - 16:01 #8
Jamen så får i lidt kode:

* Fra min aspx fil *

    <asp:AccessDataSource ID="dsSider" runat="server" DataFile="~/App_Data/Indhold.mdb"
        SelectCommand="SELECT [ID], [Overskrift], [Navn], [Date], [Hits], [Udgivet], [Kategori] FROM [content]">
    </asp:AccessDataSource>
    <br />
   
    <asp:GridView ID="gridWebsider" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="dsSider" CellSpacing="1" cellpadding="0" BorderStyle="None" >
        <Columns>
            <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True"
                SortExpression="ID" />
            <asp:BoundField DataField="Overskrift" HeaderText="Titel" SortExpression="Titel" />
            <asp:BoundField DataField="Navn" HeaderText="Forfatter" SortExpression="Forfatter" />
            <asp:BoundField DataField="Date" HeaderText="Dato" SortExpression="Dato" />
            <asp:BoundField DataField="Hits" HeaderText="Hits" SortExpression="Hits" />
            <asp:BoundField DataField="Kategori" HeaderText="Kategori" SortExpression="Kategori" />
        </Columns>
        <HeaderStyle CssClass="ListHeader" />
        <RowStyle CssClass="ListData" BorderStyle="None" BackColor="white" />
        <AlternatingRowStyle BorderStyle="None" BackColor="white"/>
    </asp:GridView>

* Fra min vb-fil: *

Protected Sub gridWebsider_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gridWebsider.RowCreated

        Dim onmouseoverStyle As String = "this.style.backgroundColor='blue'"
        Dim onmouseoutStyle As String = "this.style.backgroundColor='#@BackColor'"
        Dim rowBackColor As String

        If e.Row.RowType = DataControlRowType.DataRow Then
            If e.Row.RowState = DataControlRowState.Alternate Then
                rowBackColor = System.Drawing.ColorTranslator.ToHtml(gridWebsider.AlternatingRowStyle.BackColor).ToString()
                'rowBackColor = gridWebsider.AlternatingRowStyle.BackColor.Name.Remove(0, 2)
            Else
                rowBackColor = System.Drawing.ColorTranslator.ToHtml(gridWebsider.RowStyle.BackColor).ToString()
                'rowBackColor = gridWebsider.RowStyle.BackColor.Name.Remove(0, 2)
            End If

            e.Row.Attributes.Add("onmouseover", onmouseoverStyle)
            e.Row.Attributes.Add("onmouseout", onmouseoutStyle.Replace("@BackColor", rowBackColor))
        End If

End Sub
Avatar billede vint Nybegynder
14. september 2007 - 16:03 #9
Glemte lige, hvad der rent faktisk sker:

Når musen føres over linierne, så ændres farven til "blå" men når musen fjernes fra linien, så ændrer den nye farve ikke tilbage til den oprindelige farve, men forbliver "blå"
Avatar billede vint Nybegynder
25. september 2007 - 07:14 #10
Da det nu er længe siden der har været aktivitet og jeg ikke fik løst problemet lukker jeg tråden.
Avatar billede vint Nybegynder
02. oktober 2007 - 16:22 #11
Vil blot orientere om, at jeg nu tilsyneladende har fået det løst. Der er vist en fejl på nr. 2 link, som neoman kommer med.

Der står bl.a.

string onmouseoutStyle = "this.style.backgroundColor='#@BackColor'";

og senere

e.Row.Attributes.Add("onmouseout", onmouseoutStyle.Replace("@BackColor",rowBackColor));

Hvis jeg i linie 2 ændrer "@BackColor" til "#@BackColor" ser det ud til at virke fint

PS. Jeg har prøvet at konvertere C# koden til VB.Net og det kan være at ovennævnte virker i C# uden jeg har kendskab til det.
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