Avatar billede jensen2005 Nybegynder
07. november 2007 - 10:49 Der er 6 kommentarer og
1 løsning

Gridview markere række

Hej Eksperter
Jeg er ny i Asp.net 2 og har et spørgsmål til gridview.

Jeg har et stykke kode der nogenlunde ud sådan:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:minConnectionString %>"
            SelectCommand="SELECT * FROM bruger">
        </asp:SqlDataSource>


      <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" DataKeyNames="Login_ID" >

            <Columns>

                <asp:BoundField DataField="Login_ID" HeaderText="Login_ID" InsertVisible="False"
                    ReadOnly="True" SortExpression="Login_ID" />
                <asp:BoundField DataField="Username" HeaderText="Username" SortExpression="Username" />
                <asp:BoundField DataField="Roles" HeaderText="Roles" SortExpression="Roles" />
                <asp:BoundField DataField="Password" HeaderText="Password" SortExpression="Password" />
                <asp:BoundField DataField="fuldenavn" HeaderText="fuldenavn" SortExpression="fuldenavn" />

            </Columns>

        </asp:GridView>


Mit spørgsmål:

Hvis nu jeg gerne vil lave bold tekst i den række med bruger med Login_ID = X. På hvilke måder kan man gøre det?

Mange Tak
Mvh Jensen 2005
Avatar billede f3rn Nybegynder
07. november 2007 - 14:25 #1
Du skal have fat i hver række hver gang en række bliver databound og kigge i dens celler. Det kan gøres ved at tage fat i gridviewets RowDataBound event:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if(e.Row.DataItem != null) {
            if(e.Row.Cells[0].Text == "2") {
                e.Row.Font.Bold = true;
        }
    }
}

Dette stykke kode kigger efter værdien i den første kolonne i rækken og ser om dens tekst værdi er lig "2". Du kunne eventuelt overveje at indkapsle brugeren i en klasse, og kaste 'e' som din klasse, hvorefter du kan tilgå objektets properties. Det er efter min mening mere elegant.
Avatar billede dr_chaos Nybegynder
07. november 2007 - 14:29 #2
Sådan her: 
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" DataKeyNames="Login_ID" >

            <Columns>

                <asp:BoundField DataField="Login_ID" HeaderText="Login_ID" InsertVisible="False"
                    ReadOnly="True" SortExpression="Login_ID" />
                <asp:BoundField DataField="Username" HeaderText="Username" SortExpression="Username" />
                <asp:BoundField DataField="Roles" HeaderText="Roles" SortExpression="Roles" />
                <asp:BoundField DataField="Password" HeaderText="Password" SortExpression="Password" />
                <asp:BoundField DataField="fuldenavn" HeaderText="fuldenavn" SortExpression="fuldenavn" />
            </Columns>
                <SelectedRowStyle Font-Bold="True"
                  SelectedRowStyle>
              </asp:GridView>
Avatar billede jensen2005 Nybegynder
07. november 2007 - 14:41 #3
Hej f3rn

Tak for det.

Det var lige det jeg mente. Jeg syntes nu det ser meget elegant ud - - jeg forstår kun lidt af det du skriver til sidst.

Mvh Jensen 2005
Avatar billede f3rn Nybegynder
07. november 2007 - 14:53 #4
Ja det er ikke så slemt, når men kun vil kigge efter enkelte situationer. Hvis du har lyst, kan du evt kigge på den officelle ASP.Net webside's data tutorials, som demonstrerer hvordan man databinder med objekter og formaterer data kontroller så tosset man vil: (http://asp.net/learn/data-access/) ;)
Men godt du ku bruge det til noget.
Avatar billede jensen2005 Nybegynder
08. november 2007 - 09:33 #5
Hej f3rn

Jeg har et spørgsmål til dit svar:

Feltet Login_ID skal ikke være synligt men det er stadig det som skal bestemme og teksten skal være Bold. Jeg har prøvet følgende:

  if(e.Row.DataItem != null) {
            if(e.Row.Cells[1].Text == brugerNavn) {
             
                e.Row.Font.Bold = true;
        }
      e.Row.Cells[1].Visible = false;
    }

Men det ødelægger tabellen?


Jeg har også prøvet:

    void Page_Load(Object Src, EventArgs E)
    {
    GridView2.Columns[1].Visible = false; 
    }


Men så bliver teksten ikke Bold!

Har du en ide til hvordan man kan gøre det?

Mvh Jensen2005
Avatar billede f3rn Nybegynder
08. november 2007 - 09:52 #6
Hej.

Du kunne evt prøve at skrive e.Row.Cells[1].Text = "". Jeg går ud fra at du bare vil skjule brugernavnet, ik? Når du skriver Visible = false, så vil den slet ikke blive renderet.
Avatar billede jensen2005 Nybegynder
08. november 2007 - 11:43 #7
Hej f3rn

"Selvfølgelig" - endnu en gang tak

Mvh Lasse
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