Laden...

asp:table nach postback nicht mehr vorhanden

Erstellt von bayeror vor 19 Jahren Letzter Beitrag vor 19 Jahren 4.882 Views
bayeror Themenstarter:in
21 Beiträge seit 2004
vor 19 Jahren
asp:table nach postback nicht mehr vorhanden

so servus!
ich hätt da mal folgendes problem:

ich hab nen asp:table, da schreib ich dynamisch irgendwelche Daten rein.
wenn jetzt aber irgendein event ausgelöst wird (z.B. Button1_click) dann sind die daten nicht mehr im table.
ich hab mal versucht das Table-Objekt selbstständig im ViewState zu speichern, bringt mir aber eine exception :
"The type 'System.Web.UI.WebControls.Table' must be marked as Serializable or have a TypeConverter other than ReferenceConverter to be put in viewstate."

Gibts irgendeine Möglichkeit dass meine daten nach dem postback doch noch vorhanden sind, ohne jetzt groß ableiten zu müssen?

ich möchte auf jeden fall beim asp:table bleiben und nicht auf DataGrids oder ähnliches umsteigen.

Bin für jede Art von Hilfe dankbar!

165 Beiträge seit 2004
vor 19 Jahren

Hast Du schon mal mit "Page.IsPostback" gearbeitet? Versuch mal, das in deinem PageLoad-Event einzubauen. beispielsweise:


if (!Page.IsPostBack)
{
   DatenLaden();
}

bayeror Themenstarter:in
21 Beiträge seit 2004
vor 19 Jahren

ich les die daten aus ner datenbank, nachdem ich auf nen button geklickt hab.
des wär zwar ne möglichkeit, würde aber zu lange dauern, da ich dann bei jedem postback den select nochmal ausführen müsste

6.862 Beiträge seit 2003
vor 19 Jahren

Wenn du unbedingt beim asp:Table bleiben willst kannst du dir nen Control von ableiten das dass IPostbackDataHandler Interface implementiert obwohl asp:Table das eigentlich schon haben müsste 🤔

Aber wenn du die Daten aus einer Datenbank holst und z.B. kein DataGrid willst wegen dem Overhead könntest du doch asp:Repeater nehmen. Die Ausgabe kannste mit Templates ja leicht anpassen.

Baka wa shinanakya naoranai.

Mein XING Profil.

bayeror Themenstarter:in
21 Beiträge seit 2004
vor 19 Jahren

danke!
Was bringt mir der IPostbackDataHandler?

kann ich mitm Repeater einzelne felder hervorheben z.B. andere schriftfarbe, -größe, .... oder Textboxen oder DropdownListen reinstecken?

6.862 Beiträge seit 2003
vor 19 Jahren

Mit den Funktionen des Interfaces kannst du den Viewstate auslesen der vom Control angelegt wurde, aber wie gesagt, normal müsste es eigentlich automatisch gehen da Table ja auch von Control abgeleitet ist.

Und der Repeater macht wie der Name schon sagt nix anderes als eine Datenquelle zu durchlaufen und die einzelnen Daten auszugeben.
Die kann man mit einem Template anpassen.


<asp:Repeater id="myRepeater" runat="server">
    <ItemTemplate>
        <%# DataBinder.Eval(Container.DataItem,"ProductName") %>
        <br>
    </ItemTemplate> 

    <SeperatorTemplate>
        <hr color="red">
    </SeperatorTemplate>

    <FooterTemplate>
        2004 Copyright Talla <br>
    </FooterTemplate>
</asp:Repeater>

Rauskommen würde dann durch den Repeater ungefähr sowas:


Product1
<br>
<hr color="red">
Product2
<br>
<hr color="red">
Product3
<br>
<hr color="red">
2004 Copyright Talla

Natürlich gehen die Beispiele viel viel komplexer, du kannst alles verwenden in den Templates was durch HTML möglich ist. Also auch Dropdown Listen und Textboxen. Und du kannst in den Templates auch ServerControls mit einbauen um an die noch zusätzliche Daten zu binden.

Außer den ItemTemplate, FooterTemplate,SeperatorTemplate gibts noch HeaderTemplate, AlternatingItemTemplate, SelectedItemTemplate und EditItemTemplate wobei die Templates von asp:Repeater asp:DataList und asp:DataGrid unterstützt werden.

hoffe ist jetzt verständlich was Templates sind. Falls nich Fragen wegen dem Databinding in den Templates sind frag einfach.

Baka wa shinanakya naoranai.

Mein XING Profil.