Toon posts:

[C#/WinForms] Columns hidden maken in DataGrid*

Pagina: 1
Acties:

Verwijderd

Topicstarter
Voor een een database programma die ik in Visual Studio.NET (C#) maak heb ik het volgende probleem. Net zoals bij Delphi heb een Datagrid op m'n scherm die een eraan vastgekoppelde Dataset laat zien. Ik heb een paar kolommen zoals sessienummer (primaire sleutel), sessienaam, sessieprijs, etc.

Nu wil ik dat sessienummer (omdat het voor de gebruiker irrelevant is) niet in m'n grid tonen, maar ik wil er wel bij kunnen in m'n dataset. Nu kan ik het grid alleen maar exact laten zien wat er in m'n dataset zit en heb dus geen mogelijkheid gevonden om dus bijv. de kolom sessienummer wel in de dataset op te nemen maar niet in het grid te laten zien.

Heeft iemand enig idee hoe ik dus bijv. kan aangeven hoe ik bepaalde kolommen uit de dataset kan verstoppen voor de datagrid, zodat deze niet op het scherm komen?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

1. Property Visible van de desbetreffende kolom op false zetten?
2 Niet meebinden met de datagrid?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
De Datagrid uit Visual Studio .NET heeft wel een zgn. 'DatagridColumnStyle Collection Editor' maar daar valt - naast Aligment, HeaderText, Width, ReadOnly, etc. - geen property 'Visible' te zien. Ik heb dit ook niet kunnen benaderen via code.

Ik zou natuurlijk 'lelijke' oplossingen kunnen doen, zoals de breedte van die kolom op 0 pixels zetten of twee datasets gebruiken - eentje voor binden met de datagrid zonder sessienummer en een andere in het geheugen waar wel een sessienummer bij in zit - maar zoals het woord 'lelijk' al zegt: dat zijn lelijke oplossingen.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

ASP.NET:
1
<asp:BoundColumn Visible="False" DataField="role"></asp:BoundColumn>


ASP.NET:
1
2
Dim bc as new boundColumn
bc.Visible = False


Compleet voorbeeld:
ASP.NET:
1
2
3
4
5
6
7
8
9
10
11
12
<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False" GridLines="None" ItemCreated="Datagrid_ItemCreated" DataKeyField="role">
    <Columns>
        <asp:TemplateColumn>
            <ItemTemplate>
<asp:CheckBox id="CheckBox1" checked='<%# IsChecked(DataBinder.Eval(Container.DataItem,"role")) %>' runat="server">
</asp:CheckBox>
            </ItemTemplate>
        </asp:TemplateColumn>
        <asp:BoundColumn DataField="Description" HeaderText="Groep"></asp:BoundColumn>
        <asp:BoundColumn Visible="False" DataField="role"></asp:BoundColumn>
    </Columns>
</asp:DataGrid>


Misschien ook interessant is te kijken voor het datakeyfield, mocht je er nog events op willen loslaten. :)

[ Voor 121% gewijzigd door gorgi_19 op 04-03-2003 11:06 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 11:47
Ik denk dat de topicstarter het heeft over een Winforms applicatie, en niet over een ASP.NET applicatie. ;)

Wat je kunt doen is de ColumnMapping van de kolom die je niet wenst te zien op Hidden zetten:
code:
1
2
DataSet1.Tables[0].Columns[0].ColumnMapping = MappingType.Hidden;
dataGrid1.DataSource = DataSet1;


Als ik eerlijk moet zijn, vind ik dit wel een rare oplossing. Men zou verwachten dat je in de datagrid moet specifieren (presentatie-laag) welke columns er visible moeten zijn, en welke niet, maar je moet het in de DataSet doen. Vind ik zeer vreemd....

https://fgheysels.github.io/


Verwijderd

Topicstarter
OK bedankt!

Die MappingType.Hidden deed inderdaad het trucje!
Pagina: 1