Announcement

Collapse
No announcement yet.

Globales eigenes DataSet

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Globales eigenes DataSet

    Hallo!<p>
    Kann man unter c# eigentlich globale DataSets verwenden? Bei mir verschwinden Tables einfach so...<p>

    Unter ASp.NET lade ich im Page_Load
    <p>
    <pre>
    ...
    OleDbDataAdapter dap = new OleDbDataAdapter(sql, DbCon);
    dap.Fill(dsAArt, "AArt");
    </pre>
    mein globales DataSet, das ich protected deklariert habe un im InitializeComponent() mit
    <pre>
    this.dsAArt = new System.Data.DataSet();
    this.dsAArt.DataSetName = "dsAArt";
    this.dsAArt.Locale = new System.Globalization.CultureInfo("de-DE");
    </pre>
    initialisiert.
    Also Zugriff in der Page_Load-Funktion möglich, da wird ja die Tabelle erzeugt. Dann aber wird diese Tabelle in anderen Funktionen nicht mehr erkannt, dsAArt.Tables.Contains("AArt")=False;<p>
    <p>
    Zwar kann ich das DataSet immer wieder füllen, das macht aber doch nicht wirklich den Sinn eines DataSets aus?!? Die Tabellen hierin sollen nicht! miteinander verknüpft sein, einzige Weg DataSets in VisualStudio automatisch zu generieren, die ich gefunden habe...<p>
    Kennt irgendwer diese Probleme, oder ist meine Verwendung des DataSets von der Idee her falsch...<p>
    Viele Grüße, Nils

  • #2
    Hallo,

    über die Eigenschaft <b>IsPostBack</b> kann die WebForm prüfen, ob die Seite als Reaktion auf eine Benutzereingabe erneut angefordert wird. Das folgende Beispiel lädt und bindet die Datensätze aus der MS SQL Server-Datenbank nur dann an das DataGrid, wenn die Eigenschaft IsPostBack auf False steht und somit die Seite das 1. Mal angefordert wurde:
    <pre>
    private void Page_Load(object sender, System.EventArgs e)
    {
    // Hier Benutzercode zur Seiteninitialisierung einfügen
    if (!this.IsPostBack)
    {
    sqlConnection1.Open();
    try
    {
    sqlDataAdapter1.Fill(dataSet11);
    DataGrid1.DataBind();
    }
    finally
    {
    sqlConnection1.Close();
    }
    System.Diagnostics.Debug.Write("IsPostBack = False");
    }
    }
    </pre>
    Wenn das DataSet mehrfach verwendet werden soll, muss man es zwischen den einzelnen Seitenaufrufen irgendwo (Bsp: Session) sichern (zustandsloses HTTP-Prinzip) und beim erneuten Zugriff vorher wiederherstellen

    Comment

    Working...
    X