Avatar billede erve Nybegynder
15. april 2004 - 14:30 Der er 13 kommentarer og
1 løsning

Vertical text i datagrid header

Nogen der ved hvordan jeg får vertikal text i overskriftskolonnerne i et datagrid.
Har forsøgt mig frem med en CSS-style :

  writing-mode: tb-rl;
  filter: flipv fliph;

men uden resultat. VS.NET kender iøvrigt ikke disse properties.
Det undrer mig iøvrigt lidt , at der ikke synes at være en pænere måde at gøre det på i datagrid propertybuild'eren.
Avatar billede burningice Nybegynder
15. april 2004 - 16:24 #1
arg... væk med de styles der kun kan bruges i IE... lad os holde os til standarderne :)

ang. vertikal tekst, så kan man vel lave en form for vertikal string-render control:

public class VertikalText {
  private string text;

  public void VertikalText(string text) {
      this.text = text;
  }

  public string Text {
      set {
        this.text = value;
      }
  }

  public void Render(HtmlTextWriter writer) {
      char[] chars = this.text.ToCharArray();

      foreach (char c in chars) {
        writer.Write(c);
        writer.WriteLine("<br />");
      }
  }
}
Avatar billede erve Nybegynder
15. april 2004 - 16:48 #2
Tænkte nok at nogen ville sige det :o), men nu er det sådan at vi er committed til IE i forvejen, så det ville være ok med den binding.
Men hvis en anden metode kan anvendes er det selvfølgelig fint nok. Din control vender imidlertid ikke det enkelte bogstav såvidt jeg kan se.
Jeg er heller ikke helt klar over hvordan jeg skal kunne anvende den i et datagrid. det vil jeg da gerne høre, som en nødløsning.
Avatar billede burningice Nybegynder
15. april 2004 - 18:57 #3
ja, ok.. det er rigtig nok.. hvis de enkelte bogstaver skal vendes, så må du lave det som billede...
Avatar billede jakobg Nybegynder
15. april 2004 - 21:34 #4
Hvordan lagde du styles på? Altså dét som du ikke kunne få til at virke. Måske roder du rundt det forkerte sted? Kom med lidt kode... :)
Avatar billede erve Nybegynder
16. april 2004 - 08:17 #5
ok:
i HTML'en i VS.NET:
<asp:DataGrid id="dgAnalyseData" runat="server">
  <HeaderStyle HorizontalAlign="Left" cssClass="DatagridHeaderStyleText"></HeaderStyle>
</asp:DataGrid>
i css-fil:
.DatagridHeaderStyleText
{
  font-weight: bold;
  writing-mode: tb-rl;
  filter: flipv fliph;
}
og font-weight slår igenem, så den har fat i style-sheet'et
flg. html genereres:
<tr class="DatagridHeaderStyleText" align="Left">
Avatar billede jakobg Nybegynder
16. april 2004 - 09:19 #6
Har du prøvet at ligge style'en på den enkelte celle i headeren? Altså så du får <td class="DatagridHeaderStyleText"></td> i stedet? Det kan være, at det er IE der er lidt hys mht. den style.

Jeg syns problemet er ret interessant, kan ihvertfald nemt forestille mig kommende opgaver, hvor jeg får brug for noget tilsvarende.
Håber vi klarer den...
Avatar billede erve Nybegynder
16. april 2004 - 10:44 #7
Jeps. Go ide. Det virker hvis man gør det.
Men problemet er nu hvordan jeg får fortalt datagrid'et det. :o)
Umiddelbart bevirker linien
<HeaderStyle HorizontalAlign="Left" cssClass="DatagridHeaderStyleText"></HeaderStyle> jo at det havner i TR.
Nogen gode ideer?
Avatar billede jakobg Nybegynder
16. april 2004 - 10:54 #8
Fang DataBound event'en, og gennemløb hver celle i headeren og tilføj stylen.
Jeg kan lave et eksempel, hvis det har interesse?
Avatar billede erve Nybegynder
16. april 2004 - 11:04 #9
jatak, meget gerne. Så post det som et svar. Du har allerede tjent point'ene
Avatar billede erve Nybegynder
16. april 2004 - 11:07 #10
Men det er jo altså kun headerrækken, hvor teksten skal vendes. De enkelte datarækker skal vende normalt
Avatar billede jakobg Nybegynder
16. april 2004 - 11:17 #11
Ret din itemdatabound event:

    Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
        Select Case e.Item.ItemType
            Case ListItemType.Header
                For i As Integer = 0 To e.Item.Cells.Count - 1
                    e.Item.Cells(i).CssClass = "DatagridHeaderStyleText"
                Next
        End Select
    End Sub
Avatar billede jakobg Nybegynder
16. april 2004 - 11:21 #12
Faktisk har jeg også lige fået følgende til at virke:

<asp:BoundColumn HeaderStyle-CssClass="DatagridHeaderStyleText" HeaderText="ID" DataField="ID"></asp:BoundColumn>

Så du kan altså også gøre det i din aspx-side, hvilket nok er noget pænere... :)
Avatar billede erve Nybegynder
16. april 2004 - 12:34 #13
Jeps tak. jeg valgte den første løsning idet mit datagrid er bind'es til et dynamisk opbygget dataset. Takker
Avatar billede erve Nybegynder
16. april 2004 - 13:33 #14
accept
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