GridView / TemplateField ungebunden Wert auslesen

27/08/2007 - 17:46 von Tom U. | Report spam
Hallo zusammen,

ich verwende ein GridView mit BoundFields und einem TemplateField. Die
Zellenwerte der BoundFields kann ich auslesen, das TemplateField (ungebunden)
leider nicht. Wer weiß Rat?

Das GridView:
<asp:GridView AutoGenerateColumns="false" ID="gridview1" AllowPaging="true"
PagerSettings-Visible="false"
AllowSorting="true" OnSorting="gridview_Sorting"
OnRowDataBound="OnRowDataBound"
runat="server">
<Columns>
<%-- hidden fields / state values --%>
<asp:BoundField DataField="id"
HeaderText="ID" SortExpression="id" />
<asp:BoundField DataField="location_zip"
HeaderText="PLZ" SortExpression="location_zip" />
<asp:BoundField DataField="location_street"
HeaderText="Strasse" SortExpression="location_street" />
<asp:BoundField DataField="location_country"
HeaderText="Land" SortExpression="location_country" />
<%-- visible fields / data --%>
<asp:TemplateField HeaderText="Bezeichnung"
SortExpression="title">
<ItemTemplate>
<asp:LinkButton
CommandName="SelectEvent" ID="selectEvent" runat="server" text='<%#
Eval("title") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="location_city"
HeaderText="Ort" SortExpression="location_city" />
<asp:BoundField DataField="date"
HeaderText="Termin" SortExpression="date" />
</Columns>
</asp:GridView>

Der Code für den Zugriff auf die Daten (Column ist eine Enumeration für die
Spaltennummern, zB Column.Id = 0). valTitle ist leer, die anderen Values kann
ich so auslesen:

Protected Sub gridview1_RowCommand(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.GridViewCommandEventArgs) Handles
gridview1.RowCommand
If e.CommandName = "SelectEvent" Then
Dim row As GridViewRow = CType(CType(e.CommandSource,
Control).NamingContainer, GridViewRow)
Dim itemID As String =
gridview1.Rows(row.RowIndex).Cells(Column.Id).Text ' id (hidden column)
Dim valTitle As String =
gridview1.Rows(row.RowIndex).Cells(Column.Title).Text
Dim valStreet As String =
gridview1.Rows(row.RowIndex).Cells(Column.Street).Text
Dim valCity As String =
gridview1.Rows(row.RowIndex).Cells(Column.City).Text
Dim valCountry As String =
gridview1.Rows(row.RowIndex).Cells(Column.Country).Text

End If
End Sub

Vielen Dank für Die Hilfe!
Tom
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
27/08/2007 - 22:54 | Warnen spam
Hallo Tom,

"Tom U." schrieb:

ich verwende ein GridView mit BoundFields und einem TemplateField. Die
Zellenwerte der BoundFields kann ich auslesen, das TemplateField (ungebunden)
leider nicht.



Dein TemplateField hat ja auch keinen Zellenwert, bzw. dort steht dann der
Code des Controls drin.

Wer weiß Rat?



Warum greifst du nicht auf das DataItem der Zeile zu? Damit hast du alle
Werte und kannst die abgreifen.

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