GridView auf WebSite
-
Hallo Leute,
leider bin ich nicht der große Asp.net Kenner, daher versuche ich die meisten nötigen dynamischen Arbeiten in C# zu schreiben.
Hierbei bin ich auf ein für mich großes Problem gestoßen, bei dem es mir bislang nicht gelungen ist, eine passende Lösung zu finden.Grundsätzlich weiß ich, wie man das was ich gerne machen möchte, in Asp.Net macht, aber eben nicht wie das dynamisch geht.
Folgendes habe ich gemacht:
1.
Das Projekt geht über mehrere WebSites, dass ist soweit auch kein Problem.
2.
In diesem Projekt habe ich eine WebSite, in der ich ein GridView-Steuerelement eingebaut habe.
Das GridView wird über C# Code gefüllt und formatiert (verschiedene Farben und Markierungen usw.).Jetzt zu meinem Problem:
Im Gridview möchte ich gerne einen Hyperlink oder einen Button einsetzten, der mich auf eine andere WebSite weiterleitet und dabei einen bestimmten Datenstring aus der Zeile (da wo der Button oder der Hyperlink geklickt wurde) übergibt.Der Hyperlink oder der Button allein sind auch nicht das Problem, hierzu habe ich zuvor in das GridView das entsprechende Element eingebaut. Ich komme damit auch auf eine andere WebSite, nur Daten übergeben war bislang erfolglos, da ich dem GridView Steuerelement (Button oder Hyperlink) keine Daten zuweisen kann, oder nicht weiß, wie das geht, wenn man das GridView mit dem Hintergrund Code befüllt.
Jemand ne Ahnung oder Idee wie ich das machen könnte?
-
Ich habe ne Lösung gefunden!!
-
Wäre noch toll, wenn du deine Lösung auch präsentierst, damit andere Hilfesuchende über die Forensuche&co auch eine Lösung erhalten.
Grüssli
-
Wie die Zeit vergeht...
Sorry Leute, ist viel zu tun, habe daher bislang die Zeit nicht gefunden.So habe ich das Problem gelöst:
In das GridView habe ich ein ButtonField eingesetzt (mit Link Funktion) und habe es in ein TemplateField konvertiert.
Im aspx Code habe ich den Code dann etwas angepasst und vor allem ein OnClick Event und die PostBackUrl eingebaut:
<ItemTemplate> <asp:LinkButton ID="LinkButtonGridView" runat="server" CausesValidation="false" ForeColor="Black" CommandName="" OnClick="GridView1_Click" Text="Details" PostBackUrl="~/Folders/Details.aspx"></asp:LinkButton> </ItemTemplate>
Im cs Code habe ich dann das Klick-Event eingebaut, bei dem dann das SelectedIndex Event vom GridView1 ausgelöst wird:
protected void GridView1_Click(object sender, EventArgs e) { LinkButton gridBtn = (LinkButton)sender; GridViewRow gridRow = (GridViewRow)gridBtn.NamingContainer; Int32 selectedIndex = gridRow.DataItemIndex; GridView1.SelectedIndex = selectedIndex; GridView1_SelectedIndexChanged(GridView1, EventArgs.Empty); }
Im SelectedIndexChanged Event wird dann der Wert aus der Zeile des GridView1 in ein TextBox geschrieben (wird dann auf der nächsten WebSite abgefragt):
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { Int32 rowIndex = Convert.ToInt32(GridView1.SelectedIndex); Int32 index = -1; Int32 columnCount = GridView1.HeaderRow.Cells.Count; for (Int32 i = 0; i < columnCount; i++) if (GridView1.HeaderRow.Cells[i].Text.Trim() == "ID:") index = i; TextBoxID.Text = GridView1.Rows[rowIndex].Cells[index].Text.Trim(); }
Im aspx Code der folgenden WebSite wird der folgende Code benötigt, um die Information der vorherigen WebSite abzufragen:
<%@ PreviousPageType VirtualPath="Details.aspx" %>
Im cs Code frage ich den Wert dann mit der folgenden Anweisung ab, und kann diesen so weiterverwenden:
Boolean previousFound = false; if (Page.PreviousPage != null) { LabelID.Text = PreviousPage.currentText(); previousFound = true; }
Ja, möglicherweise ist der Code nicht so richtig gut, aber besser wusste ich es nicht, und es so funktioniert ...