Probleme mit Datagrid (VS 2005)

04/08/2008 - 18:04 von Winfried Wolf | Report spam
Hi Gemeinde

ich habe ein Problem mit dem Datagrid in VS 2005

Ich habe eine DataTable aus einer DB geholt (6 Spalten) z.B. prop0 bis prop5
und diese Table als Datasource an ein Grid gehàngt. IN VS 2003 konnte ich
nun Spalten des Grids auf visisble=False schalten, und bekam im Event
Grid1_ItemDataBound aber den Inhalt der Zelle.

In VS 2005 klappt das nun nicht mehr. Wenn ich im Grid die Spalte auf
visible=false setze bekomme ich zwar noch die Spalte zurück (RowCount=6),
aber der Inhalt der Spalte ist immer Leer ("").

Mach ich da was falsch, oder geht das einfach nicht mehr.

Quellen:
<asp:GridView ID="dgKunden" runat="server" AutoGenerateColumns="False"
Width="80%">
<Columns>
<asp:BoundField DataField="Gesellschaft" HeaderText="Kundenbezeichnung"
/>
<asp:BoundField DataField="kundennr" HeaderText="Debitor" />
<asp:BoundField DataField="filter" HeaderText="Datenfilter" />
<asp:BoundField DataField="text1" HeaderText="Bemerkung" />
<asp:BoundField DataField="rolle" HeaderText="Rolle" />
<asp:BoundField DataField="id_kunde" HeaderText="id_kunde"
Visible="False" ConvertEmptyStringToNull="False" />
</Columns>
<RowStyle CssClass="fse_grid" />
<HeaderStyle CssClass="fse_grid_kopf" />
<AlternatingRowStyle CssClass="fse_grid_alternate" />
</asp:GridView>

VB:
Protected Sub dgKunden_RowDataBound(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.GridViewRowEventArgs) Handles
dgKunden.RowDataBound
Dim lName As String
Dim lID As Integer

Select Case e.Row.RowType
Case DataControlRowType.DataRow
lName = e.Row.Cells(0).Text
lID = e.Row.Cells(5).Text


Hier kommt immer ein Leerstring zurück ("").



Gruß Winfried
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
04/08/2008 - 22:24 | Warnen spam
Hallo Winfried,

"Winfried Wolf" schrieb:

Wenn ich im Grid die Spalte auf visible=false setze bekomme ich zwar noch die Spalte zurück (RowCount=6), aber der Inhalt der
Spalte ist immer Leer ("").



bist Du sicher, dass Du ein DataGrid verwendest? Ich denke eher, Du hast
da ein GridView Control. Ich poste einfach mal ein Beispiel für beides.

Innerhalb von ItemDataBound [DataGrid] bzw. RowDataBound [GridView] hast Du
Zugriff auf das DataItem der Zeile.

[DataGrid]
Protected Sub <DataGrid>_ItemDataBound( ... ) Handles <DataGrid>.ItemDataBound

If e.Item.ItemType <> ListItemType.Item AndAlso _
e.Item.ItemType <> ListItemType.AlternatingItem Then
Exit Sub
End if

Dim <Variable> As <Datentyp> = CType( e.Item.DataItem( "<Spalte>" ), <Datentyp> )

...

End Sub


[GridView]
Protected Sub <GridView>_RowDataBound( ... ) Handles <GridView>.RowDataBound

If e.Row.RowType <> DataControlRowType.DataRow Then
Exit Sub
End if

Dim <Variable> As <Datentyp> = CType( e.Row.DataItem( "<Spalte>" ), <Datentyp> )

...

End Sub

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen