Benutzer mit den meisten Antworten
Gridview aufgrund von Spaltenwert eines anderen Gridviews erstellen

Frage
-
Hallo,
ich habe eine Textbox mit der ich die Parameter fürs Gridview eingebe. (Access Source)
Dann wird mir in den meisten Fällen eine manchmal aber auch mehrere Zeilen ausgeben.
Diese haben 10 Spalten.
Nun habe ich ein anderes Gridview (SQL Source) das auf die Daten der 2. Spalte vom 1. Gridview abfragen soll.
Ich habe mir schon gedacht das ich den Spaltenwert temporär in ein Label schreibe und im 2. Gridview dann sage WHERE (Nr = ?) und <asp:FormParameter FormField="labelTemp" Name="Nr" Type="String" />.
Ka ob das geht. Habe bisher auch noch nichts gefunden wie ich einen Spaltenwert einem Label zuordnen kann :/.
Danke und Gruß
sim_n
Antworten
-
Hi,
Über die Verschachtelung könnte ich in jeder Gridview Zeile ein Detailsview integrieren.
Dann mach das doch!? Du bist ja nicht gezwungen, das neue Control innerhalb der Zeile zu erstellen.
Ich möchte das Detailsview aber seperat, unter dem Gridview erzeugen.
<asp:GridView ...> ... </asp:GridView> <br /> <asp:PlaceHolder ID="DetailViewsContainer" runat="server" />
In dem Fall kannst Du dann das den Code so aufbauen, dass dein DetailsView Control in den Placeholder kommt.
Dim MyNewControl As DetailsView ... DetailsViewContainer.Controls.Add( MyNewControl )
Das Hauptproblem ist aber das ich es nicht schaff dass, das Detailview die Nr verwendet die im Gridview erzeugt wurde und dann diese auf SQL DB abprüft.
Welche Nummer wurde denn im GridView erzeugt ? Die Werte kommen doch aus der Datenbank und stehen bspw. im RowDataBound Event e.Row.DataItem( ... ) zur Verfügung.
Gruß, 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
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Mittwoch, 24. März 2010 17:07
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 25. März 2010 13:31
Alle Antworten
-
Hallo,
ich habe eine Textbox mit der ich die Parameter fürs Gridview eingebe. (Access Source)
vorab der Hinweis, dass AccessDataSource, SqlDataSource, ... nicht wirklich das sind, was Du nehmen solltest. Siehe hierzu bspw.:
http://karsan.de/2008/06/06/asp-net-handarbeit-statt-datasource/
Nun habe ich ein anderes Gridview (SQL Source) das auf die Daten der 2. Spalte vom 1. Gridview abfragen soll.
Willst Du auf alle Werte, die in der zweiten Spalte vorkommen, abfragen? Oder nur auf einen bestimmten, bspw. den Wert im aktuell selektierten Datensatz?
Ich habe mir schon gedacht das ich den Spaltenwert temporär in ein Label schreibe und im 2. Gridview dann sage WHERE (Nr = ?) und <asp:FormParameter FormField="labelTemp" Name="Nr" Type="String" />.
Ka ob das geht. Habe bisher auch noch nichts gefunden wie ich einen Spaltenwert einem Label zuordnen kann :/.
Grundsätzlich solltest Du, wenn Du auf Werte aus einer Datenbank abprüfen willst, auch über die Datenbank gehen. In dem Fall wäre das dann bspw. eine Abfrage in der Art wie:
SELECT ... FROM ... WHERE <Feld> = <Eingabewert> AND <AnderesFeld> IN ( SELECT <Spalte> FROM <AndereTabelle> )
<Eingabewert> ist dabei dann der Wert aus deiner TextBox, <Spalte> entspricht der Spalte in der Tabelle, die in der zweiten Spalte deines GridView Controls dargestellt wird.
Gruß, 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
-
Hallo Stefan,
vorab der Hinweis, dass AccessDataSource, SqlDataSource, ... nicht wirklich das sind, was Du nehmen solltest. Siehe hierzu bspw.:
ich beschäftige mich erst seit gut 2 Wochen mit dem Thema, das war mir nicht bekannt danke!
http://karsan.de/2008/06/06/asp-net-handarbeit-statt-datasource/
Ich bin aber erstmal froh wenn es "so" läuft.
Besser machen geht dann immer noch :).
Willst Du auf alle Werte, die in der zweiten Spalte vorkommen, abfragen? Oder nur auf einen bestimmten, bspw. den Wert im aktuell selektierten Datensatz?
Ich will erstmal nur auf einen bestimmen Wert abfragen.
Grundsätzlich solltest Du, wenn Du auf Werte aus einer Datenbank abprüfen willst, auch über die Datenbank gehen. In dem Fall wäre das dann bspw. eine Abfrage in der Art wie:
SELECT ... FROM ... WHERE <Feld> = <Eingabewert> AND <AnderesFeld> IN ( SELECT <Spalte> FROM <AndereTabelle> )
Es ist so das ich im ersten Gridview nach vielen Parametern suchen kann, im 2. Jedoch nur nach einem. Deshalb brauche ich erst den Wert vom 1. Gridview damit ich das 2. erstellen kann.
Kann ich WHERE Teil auch eine Tabelle in einer andere DataSource angeben?
Bspw (Pseudo Code ;) ).:
WHERE EineTabellevom2.Gridview.Nr IN (SELECT Nr FROM AccessDatasource2.Tabelle1)
Gruß sim_n -
Hallo,
Ich will erstmal nur auf einen bestimmen Wert abfragen.
auf welchen "bestimmten" Wert willst Du denn abfragen, wenn Du mehrere Datensätze erhältst? Wenn Du bspw. sowas zurück erhältst:
Es ist so das ich im ersten Gridview nach vielen Parametern suchen kann, im 2. Jedoch nur nach einem. Deshalb brauche ich erst den Wert vom 1. Gridview damit ich das 2. erstellen kann.
Kann ich WHERE Teil auch eine Tabelle in einer andere DataSource angeben?
Spalte1 Spalte2 ...
Wert A 1
Wert B 7
Wert X 0815
Nach was soll dann im 2. GridView gefiltert werden? Nach 1? 7? 0815? Alles zusammen?
Gruß, 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
-
Hallo,
auf welchen "bestimmten" Wert willst Du denn abfragen, wenn Du mehrere Datensätze erhältst? Wenn Du bspw. sowas zurück erhältst:
Spalte1 Spalte2 ...
Wert A 1
Wert B 7
Wert X 0815
Nach was soll dann im 2. GridView gefiltert werden? Nach 1? 7? 0815? Alles zusammen?
Am besten wäre es wenn er für jeden Wert ein neues Gridview erstellt. Soweit war ich aber noch nicht.
Im Prinzip reicht erst mal der erste Wert aus Spalte 2.
Gruß sim_n -
Hallo,
Am besten wäre es wenn er für jeden Wert ein neues Gridview erstellt. Soweit war ich aber noch nicht.
also eine Verschachteltung von GridView Controls.
Im Prinzip reicht erst mal der erste Wert aus Spalte 2.
Dazu gibt es in der MSDN ein passendes Beispiel.
http://msdn.microsoft.com/de-de/library/aa992038.aspx
Alternativ auch noch:
http://msdn.microsoft.com/de-de/magazine/cc500643.aspx
Wobei man natürlich auch mit einem Repeater Control (oder DataList, ListView, ...) arbeiten kann.
http://blog.thomasbandt.de/39/1544/de/blog/aspnet-20-verschachtelte-repeater-und-databinding.html
Gruß, 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
-
Sorry für die späte Rückmeldung.
Irgendwie komm ich nicht weiter.
Über die Verschachtelung könnte ich in jeder Gridview Zeile ein Detailsview integrieren.
Ich möchte das Detailsview aber seperat, unter dem Gridview erzeugen.
Das Hauptproblem ist aber das ich es nicht schaff dass, das Detailview die Nr verwendet die im Gridview erzeugt wurde und dann diese auf SQL DB abprüft.
Es sollte so ablaufen.
- In Textbox Suchbegriff eingeben
- Gridview wird erzeugt mit Name... Nr.. etc.
- Detailsview wird erzeugt mit Nr von Gridview
Der letzte Punkt bringt mich aber zum Verzweifeln.
Gruß sim_n -
Hi,
Über die Verschachtelung könnte ich in jeder Gridview Zeile ein Detailsview integrieren.
Dann mach das doch!? Du bist ja nicht gezwungen, das neue Control innerhalb der Zeile zu erstellen.
Ich möchte das Detailsview aber seperat, unter dem Gridview erzeugen.
<asp:GridView ...> ... </asp:GridView> <br /> <asp:PlaceHolder ID="DetailViewsContainer" runat="server" />
In dem Fall kannst Du dann das den Code so aufbauen, dass dein DetailsView Control in den Placeholder kommt.
Dim MyNewControl As DetailsView ... DetailsViewContainer.Controls.Add( MyNewControl )
Das Hauptproblem ist aber das ich es nicht schaff dass, das Detailview die Nr verwendet die im Gridview erzeugt wurde und dann diese auf SQL DB abprüft.
Welche Nummer wurde denn im GridView erzeugt ? Die Werte kommen doch aus der Datenbank und stehen bspw. im RowDataBound Event e.Row.DataItem( ... ) zur Verfügung.
Gruß, 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
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Mittwoch, 24. März 2010 17:07
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 25. März 2010 13:31