Laden...

Frage zur Darstellung von ASP.NET Ergebnislisten

Erstellt von Tosek vor 17 Jahren Letzter Beitrag vor 17 Jahren 3.372 Views
T
Tosek Themenstarter:in
38 Beiträge seit 2006
vor 17 Jahren
Frage zur Darstellung von ASP.NET Ergebnislisten

Hallo zusammen,

ich möchte in meiner ASP.NET (2.0) Anwendung eine Abfrage auf dem Server machen und das Ergebnis (keine Datenbankabfrage, irgendwas proprietäres) dann auf einer Webseite als Liste darstellen.

Diese Liste soll je Eintrag einen Text, einen Link, vorne eine Checkbox und jeweils 2-3 Buttons beinhalten. Am Kopf der Liste soll noch eine Checkbox zum an-/ auschecken aller Checkboxen sein.

Kann ich sowas mit irgendeinem Control erstellen, so dass ich auch Events, Postbacks usw. benutzen kann?

Wenn ja, wo finde ich dazu Beispiele oder Informationen?

Gruß
Tosek

There are 10 diffent types of people in this world: Those who understand binary and those who don't....

N
4.644 Beiträge seit 2004
vor 17 Jahren

Das GridView sollte Dir helfen. Da kannst Du Templates verwenden.

1.130 Beiträge seit 2005
vor 17 Jahren
T
Tosek Themenstarter:in
38 Beiträge seit 2006
vor 17 Jahren
hmmm.

Hi,

ich verstehe aber noch nicht ganz, wie ich daten in das Gridview einfüllen kann, wenn diese nicht aus einerr Datenbank (datenbank-quelle) kommen, sondern einfach aus einer collection, die ich selbst verwalte.

Kann mir da jemand einen Tip geben?

There are 10 diffent types of people in this world: Those who understand binary and those who don't....

1.130 Beiträge seit 2005
vor 17 Jahren

Wo genau liegt denn Dein Problem?

484 Beiträge seit 2006
vor 17 Jahren

In dem Du deine Collection an das GridView bindest.

GridView.DataSource = DeineCollection;
GridView.DataBind():

Jörg

T
Tosek Themenstarter:in
38 Beiträge seit 2006
vor 17 Jahren
datasource

bei datasource muss ich aber doch ein object vom typ datatable angeben, oder?

Woher soll das Gridview vorher wissen, wie meine collection (in meinem fall ein ArrayList mit einer Liste von structs oder datenobjekten mit diversen public members) aussieht?

There are 10 diffent types of people in this world: Those who understand binary and those who don't....

G
497 Beiträge seit 2006
vor 17 Jahren

je nach Art der Collection (bzw. der Implementation der Schnittstellen) bekommt das Gridview seine Informationen über Reflection. Eine DataTable ist auch nur eine Collection, genauso wie eine DataRow (die enthält eine Collection von DataColumns).

T
Tosek Themenstarter:in
38 Beiträge seit 2006
vor 17 Jahren
Schnittstelle

hallo,

wo kann ich finden wie ich die Schnittstelle auszuprägen habe? Gibt es irgendwo Dokumentation? Ich habe in der MSDN nicht das richtige gefunden.

Danke im voraus.
Torsten

There are 10 diffent types of people in this world: Those who understand binary and those who don't....

N
4.644 Beiträge seit 2004
vor 17 Jahren

Die DataSource kann auch eine IList binden. Binde doch einfach Deine ArrayList.

T
Tosek Themenstarter:in
38 Beiträge seit 2006
vor 17 Jahren
DataTable

hallo,

ich erzeuge jetzt eine Datatable und fülle diese statt meines Arrays. Dadurch klappt es nun.

Danke schonmal.

There are 10 diffent types of people in this world: Those who understand binary and those who don't....

W
799 Beiträge seit 2004
vor 17 Jahren

Arbeite doch mit eigenen Objekten und Listen, dann hast du alles typisiert und hast die volle Bequemlichkeit in Sachen IntelliSense, Debugger und weniger Fehleranfälligkeit.

Beispiel:


public class MyObject
{
	private string text;
	public string Text
	{
		get { reteurn text; }
		set { text = value; }
	}
}t

Binden:

List<MyObject> dataSource = new List<MyObject>();
dataSource.Add(new MyObject());
dataSource.Add(new MyObject());
dataSource.Add(new MyObject());

GridView1.DataSource = datasource;
GridView1.DataBind();
T
Tosek Themenstarter:in
38 Beiträge seit 2006
vor 17 Jahren
Das löst aber mein Problem leider nicht

hallo,

leider löst das mein Problem nicht. Ich bekomme ja sehr gut eine Datenquelle gesetzt.
Allerdings habe ich in meinem Gridview je zeile auch ein paar buttonfields. Wenn nun diese geklickt werden z.b. dann das Command "show" s.o. senden, dann soll mit dem item, welches in dieser Zeile dargestellt wird eine bestimmte aktion geschehen. Um diese Aktion machen zu könne, benötige ich allerdings mehr Informationen als ich dem benutzer anzeigen möchte (z.B. eine sehr große Zahl, die das Item eindeutig identifiziert).
Diese wollte ich in einem hidden field des Gridview verstecken. Dann hätte ich sie auslesen und meine aktion durchführen können.

Somit bleibt die Frage, wie kann ich zu einer gridview row zusätzliche, versteckte Informationen speichern und auslesen?

There are 10 diffent types of people in this world: Those who understand binary and those who don't....

N
4.644 Beiträge seit 2004
vor 17 Jahren

Du kannst mt Templates arbeiten, die kannst DU dann auch ausblenden.

W
799 Beiträge seit 2004
vor 17 Jahren

Templates benutzen, an den Button die ID binden. Schau dir mal die Beispiele und Dokus zum Thema im Netz an, ist wirklich kein Problem - du machst es dir komplizierter, als es ist.

T
Tosek Themenstarter:in
38 Beiträge seit 2006
vor 17 Jahren
ich bin zu blöd dazu

Hallo,

irgendwie weiß ich trotz webrecherche noch nicht wie ich das ganze angehen soll.

Ich habe eine Datatable mit den Columns: Name, Adresse, ID
Name und Adresse will ich im Datagrid anzeigen. Dazu habe ich im Datagrid 3 BoundFields mit den Spalten verknüpft.
Die 4. Datagrid Spalte ist ein Buttonfield, welches an nichts gebunden ist. Ich verwende es, damit mit auf einen EIntrag eine Aktion auslösen kann.

Wenn ich das Buttonfield mit ID binde, dann steht die ID auch immer auf dem button, was ich garnicht will. Auf dem Button soll immer "mach was" stehen.

Jetzt habe ich versucht ein TemplateField zu verwenden:


<asp:templatefield headertext="ID">
            <itemtemplate>
              <asp:label id="ID" text="" />
            </itemtemplate>
</asp:templatefield>

Allerdings weiß ich nicht, wie ich denn nun Daten in diesem Templatefield insb. dem Label in dem Templete Field ablegen soll, und wie ich diese dann nach Buttonclick auch auslesen soll, vor allen Dingen, wenn ich das Templatefield mit visible=false auf unsichtbar schalte?

Könnt ihr mir evtl. einen konkreteren Tip geben?

There are 10 diffent types of people in this world: Those who understand binary and those who don't....

W
799 Beiträge seit 2004
vor 17 Jahren

Stichworte:

Button, CommandName, CommandArgument

T
Tosek Themenstarter:in
38 Beiträge seit 2006
vor 17 Jahren
sorry

Sorry, aber das ist einfach nicht mein Problem.

Ich kann jetzt schon prima auf einen Buttonklick reagieren.
Ich kann auch prima dann die Einträge in einem Gridview auslesen.

**Was ich jedoch einfach nicht kann, ist die Einträge einer auf invisble konfigurierten Spalte auslesen. (ich bekomme bei der Eigenschaft Text immer nur "" zurück) Nur darum geht es. **

Ich verstehe irgendwie nicht,

1.) was mir ein Templatefield dabei helfen könnte
2.) warum ich visible = false Spalten aus einem Gridview nicht auslesen kann.

Wenn visible nämlich = true ist, dann klappt alles wunderbar.

There are 10 diffent types of people in this world: Those who understand binary and those who don't....

W
799 Beiträge seit 2004
vor 17 Jahren

Es ist exakt dein Problem, du verstehst es nur (noch) nicht.

Verwende eine Template-Spalte. In diese Template-Spalte setzt du einen asp:Button. Diesem weist du ein Command-Event zu, und gibsst ihm als CommandArgument die ID, das tust du, in dem du sie bindest:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;

public class MyObject
{

    public MyObject(int id, string text)
    {
        this.id = id;
        this.text = text;
    }

    private int id;
    public int ID
    {
        get { return id; }
        set { id = value; }
    }

    private string text;
    public string Text
    {
        get { return text; }
        set { text = value; }
    }

}

public partial class _Default : System.Web.UI.Page 
{

    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);


        List<MyObject> source = new List<MyObject>();
        source.Add(new MyObject(1, "hallo"));
        source.Add(new MyObject(2, "welt"));
        source.Add(new MyObject(3, "!"));

        Grid1.DataSource = source;
        Grid1.DataBind();

    }

    protected void MachWas(object sender, CommandEventArgs e)
    {
        Response.Write(e.CommandArgument);
    }

}
<asp:GridView runat="server" ID="Grid1" AutoGenerateColumns="false">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <%# Eval("Text") %>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Button ID="btnMachwas" OnCommand="MachWas" CommandArgument='<%# Eval("ID") %>' runat="server" Text="Klick!" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
T
Tosek Themenstarter:in
38 Beiträge seit 2006
vor 17 Jahren
:-)

Jetzt ist das 10 ct Stück bei mir gefallen. Sorry, dass ich so begriffsstutzig war.

Damit werde ich es wohl hinbekommen.

Vielen Dank Waschbecklen. 🙂

Wobei ich immer noch mich frage warum ich die invisible Spalten nicht auslesen kann. (Bei den visible Spalten geht es doch auch)

There are 10 diffent types of people in this world: Those who understand binary and those who don't....

W
799 Beiträge seit 2004
vor 17 Jahren