GridView auf unsichtbare Zelleninhalte zugreifen

30/06/2008 - 09:17 von Tim Konnst | Report spam
Hallo,

ich versuche beim RowDataBound Ereignis die ID einer Row mit einer von mir
gesetzten ID zu vergleichen. Stimmen beide IDs überein soll in eine Zelle ein
bestimmter Text geschrieben werden. Das Problem liegt darin das die ID Spalte
des GridViews auf visible="false" gesetzt ist und ich, wenn ich diese Spalte
ausgeben will, keine Id angezeigt bekomme. hat jemand eine Idee dazu wie ich
das machen könnte?

Wenn ich visible="true" stelle geht natürlich alles ;)

Danke!

Grüße Tim


Hier mein Code ASP:

<asp:GridView ID="GridViewZuschlag"
runat="server"
DataSourceID="SqlDataSourceZuschlag"
CellPadding="4"
ForeColor="#333333"
GridLines="Both"
AllowSorting="True"
AutoGenerateColumns="False"
AutoGenerateEditButton="False"
AutoGenerateDeleteButton="False"
DataKeyNames="ID"
OnRowDataBound="GridViewZuschlag_RowDataBound">

<Columns>
<asp:BoundField DataField="ID" HeaderText="ID"
SortExpression="ID" Visible="False"/>
<asp:BoundField DataField="Datum" HeaderText="Datum"
SortExpression="Datum" />
<asp:BoundField DataField="Maxwert" HeaderText="Maxwert"
SortExpression="Maxwert" />
<asp:BoundField DataField="Minwert" HeaderText="Minwert"
SortExpression="Minwert" />
<asp:BoundField DataField="Zuschlag" HeaderText="Zuschlag"
SortExpression="Zuschlag" />
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="ButtonDelete" runat="server"
CausesValidation="False" CommandName="Delete" Text="Löschen"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>

...usw...

Hier mein Code C#:


public void GridViewZuschlag_RowDataBound(Object sender,
GridViewRowEventArgs e)
{

if (e.Row.RowType == DataControlRowType.DataRow)
{

// hier wir auf die ID geprüft
// Leider steht in der Zelle 0 nichts da visible = "false" im GridView
if (e.Row.Cells[0].Text.Equals("3")
{
}
else
{
e.Row.Cells[5].Text = "Wenn Vergleich true dann erscheint
dieser text";
}
}

}
 

Lesen sie die antworten

#1 Adrian Stern
30/06/2008 - 11:18 | Warnen spam
Guck dir mal den HTML Code an.
Die Tabelle die Generiert wird, enthàlt warscheindlich keine ID Zeile.

Du musst warscheindlich über die DataTable gehen und von der GridView
nur den Zeilen Index auslesen.

Tim Konnst schrieb:
Hallo,

ich versuche beim RowDataBound Ereignis die ID einer Row mit einer von mir
gesetzten ID zu vergleichen. Stimmen beide IDs überein soll in eine Zelle ein
bestimmter Text geschrieben werden. Das Problem liegt darin das die ID Spalte
des GridViews auf visible="false" gesetzt ist und ich, wenn ich diese Spalte
ausgeben will, keine Id angezeigt bekomme. hat jemand eine Idee dazu wie ich
das machen könnte?

Wenn ich visible="true" stelle geht natürlich alles ;)

Danke!

Grüße Tim


Hier mein Code ASP:

<asp:GridView ID="GridViewZuschlag"
runat="server"
DataSourceID="SqlDataSourceZuschlag"
CellPadding="4"
ForeColor="#333333"
GridLines="Both"
AllowSorting="True"
AutoGenerateColumns="False"
AutoGenerateEditButton="False"
AutoGenerateDeleteButton="False"
DataKeyNames="ID"
OnRowDataBound="GridViewZuschlag_RowDataBound">

<Columns>
<asp:BoundField DataField="ID" HeaderText="ID"
SortExpression="ID" Visible="False"/>
<asp:BoundField DataField="Datum" HeaderText="Datum"
SortExpression="Datum" />
<asp:BoundField DataField="Maxwert" HeaderText="Maxwert"
SortExpression="Maxwert" />
<asp:BoundField DataField="Minwert" HeaderText="Minwert"
SortExpression="Minwert" />
<asp:BoundField DataField="Zuschlag" HeaderText="Zuschlag"
SortExpression="Zuschlag" />
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="ButtonDelete" runat="server"
CausesValidation="False" CommandName="Delete" Text="Löschen"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>

...usw...

Hier mein Code C#:


public void GridViewZuschlag_RowDataBound(Object sender,
GridViewRowEventArgs e)
{

if (e.Row.RowType == DataControlRowType.DataRow)
{

// hier wir auf die ID geprüft
// Leider steht in der Zelle 0 nichts da visible = "false" im GridView
if (e.Row.Cells[0].Text.Equals("3")
{
}
else
{
e.Row.Cells[5].Text = "Wenn Vergleich true dann erscheint
dieser text";
}
}

}

Ähnliche fragen