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!
Hast Du schon mal mit "Page.IsPostback" gearbeitet? Versuch mal, das in deinem PageLoad-Event einzubauen. beispielsweise:
if (!Page.IsPostBack)
{
DatenLaden();
}
Visit my blog : http://stephanon.net
soCMS: http://www.socms.de
itwebportal.de: http://www.itwebportal.de
netug Düsseldorf: http://www.netug-duesseldorf.de - http://www.netug.de
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
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.
danke!
Was bringt mir der IPostbackDataHandler?
kann ich mitm Repeater einzelne felder hervorheben z.B. andere schriftfarbe, -größe, .... oder Textboxen oder DropdownListen reinstecken?
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.