Avatar billede Simon Praktikant
15. januar 2006 - 01:08 Der er 7 kommentarer og
1 løsning

skjule kolonne i GridView

Jeg vil gerne skjule en kolonne i et GridView.

Først overføres indholdet af en DataTable til en GridView, hvor det vises. Det virker med nedenstående kode.

Session["dtMitDataTable"] = dtMitDataTable;
gv_MitGridView.DataSource = dtMitDataTable;
gv_MitGridView.DataBind();

Nu vil jeg så gerne skjule kolonne 4, og forsøger således:

gv_MitGridView.Columns[4].ItemStyle.Width = 0;

Men så får jeg en fejl: "Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index"

Jeg ved at der er 5 kolonner, fordi de bliver vist på siden, så det er ikke fordi der mangler en kolonne???

Jeg har forsøgt at udlæse antallet af kolonner således:
tb_message.Text = gv_MitGridView.Columns.Count.ToString();

Og her udlæses ikke 5, men 0... meget mystisk!!!

Hvis jeg oprettet en kolonne på kompile-time, eks: delete-,select-, edit- eller andre kolonner bliver antallet af dem vist. Men det er som om antallet af kolonner fra mit DataTable ikke bliver medregnet.
Avatar billede snepnet Nybegynder
15. januar 2006 - 01:11 #1
griddet indeholder ikke nogle kolonner på det tidspunkt hvis du ikke angiver dem deklarativt.
mvh
Avatar billede snepnet Nybegynder
15. januar 2006 - 01:13 #2
Her et eksempel på en bound column:

<asp:DataGrid ID="grid" runat="server">
    <Columns>
        <asp:BoundColumn DataField="SomeDataColumn" HeaderText="SomeColumn"></asp:BoundColumn>
    </Columns>
</asp:DataGrid>

mvh
Avatar billede snepnet Nybegynder
15. januar 2006 - 01:16 #3
du kan godt skjule de kolonner der bliver genereret automatisk - bare ikke igennem den columnscollection der er på griddet, men f.eks. i forbindelse med at du databinder.
sig til hvis det er det du helst vil... så får du et eksempel på det.
mvh
Avatar billede snepnet Nybegynder
15. januar 2006 - 01:19 #4
og æh... når det nu er et gridview du bruger, så ser det sådan her ud :o)

<asp:GridView ID="grid" runat="server">
    <Columns>         
        <asp:BoundField DataField="SomeDataColumn" HeaderText="SomeColumn" />
    </Columns>
</asp:GridView>

altså sådan ca. et BoundField istedet for en BoundColumn... undskyld misseren.

mvh
Avatar billede Simon Praktikant
15. januar 2006 - 20:35 #5
Tak for de mange kommentarer. Jeg vil gerne skjule kolonnerne i forbindelse med at jeg databinder.

Havde du eksempel herpå?
Avatar billede snepnet Nybegynder
15. januar 2006 - 20:44 #6
jada:

hvis du på dit gridview indsætter sådan en her i aspx'en:
OnRowDataBound="grid_RowDataBound"

og så en handler i koden:

protected void grid_RowDataBound(object sender, GridViewRowEventArgs e)
{
  // bare som eksempel
  e.Row.Cells[0].Visible = false;
}

mvh
Avatar billede Simon Praktikant
15. januar 2006 - 20:54 #7
tak for hjælpen. Smid et svar og pointene er dine
Avatar billede snepnet Nybegynder
15. januar 2006 - 20:55 #8
kommer her :o)
mvh
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