Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[ASP.NET ] Async geladen grid opslaan

Pagina: 1
Acties:

  • mr_taipan
  • Registratie: Februari 2002
  • Laatst online: 03-12-2024
Ik heb een pagina met een GridView er op. Het grid heeft een templatecolumn met daarin een textbox.

code:
1
2
3
<ItemTemplate>
   <asp:TextBox ID="Tnummer" runat="server" Text='<%# Bind("Nummer") %>'></asp:TextBox>
</ItemTemplate>


Via een CallbackEventHandler worden er rijen aan het grid toegevoegd en een gerenderd terug gegeven.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 Public Function GetCallbackResult() As String Implements System.Web.UI.ICallbackEventHandler.GetCallbackResult

        GridView1.DataSource = DataManager.getnewdatasource(Me.EditItem.ID)
        GridView1.DataBind()

        Dim sb As New Text.StringBuilder(1000)
        Dim w1 As New StringWriter(sb)
        Dim writer As New HtmlTextWriter(w1)
        GridView1.RenderControl(writer)
        writer.Close()
        w1.Close()

        Return sb.ToString()
    End Function


Als laaste is er de opslaan knop die een postback naar de server doet. In het click event van die knop loop ik door alle rijen van het grid heen zoek het id en de textbox bij elkaar en sla dat op naar de database.

Nu komt mijn probleem:

Als er een rij is toegevoed en het grid opnieuw gerenderd is stuurt hij keurig een nieuw grid terug. Doe ik daarna een postback dan heeft het grid opeens weer evenveel rijen als toen ik de pagina voor de eerste keer opende.

Hoe laat ik asp.net weten dat het grid opnieuw gerenderd is en er dus een rij is bijgekomen.

Op google kan ik niks vinden omdat ik geen idee heb hoe je het kort zou moeten omschrijven

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 28-11 11:15

sopsop

[v] [;,,;] [v]

Kun je niet gewoon een viewstate var aanmaken?
[code=c#]ViewState["GridRowsAdded"] = True[/code]


hmm dit bedoelde je niet.

Je doet iets met het renderen, dat heeft weinig te maken met de gridview zelf, maar met wat hij uitpoept. Na iedere postback wordt de gridview opnieuw gerenderd en als je jouw toevoegingen niet na iedere postback opnieuw doet, zullen die wijzigingen verdwijnen.

Je zou ook het event OnPreRender van je gridview of het Render event van de pagina kunnen gebruiken om bij iedere postback de wijzigingen toe te passen.

Die wijzigingen kun je dan in een viewstate opslaan en bij iedere postback kunnen uitvoeren, het 'opslaan' kun je dan adhv die viewstate var doen.

[ Voor 83% gewijzigd door sopsop op 17-08-2007 09:07 ]


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je moet zorgen dat tijdens je callback de goede datasource weer aan je grid gebind wordt denk ik.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 13-12-2024
doe je een Page.IsPostback check bij het laden van je grid (eerste keer?)

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • mr_taipan
  • Registratie: Februari 2002
  • Laatst online: 03-12-2024
4of9 schreef op vrijdag 17 augustus 2007 @ 11:46:
doe je een Page.IsPostback check bij het laden van je grid (eerste keer?)
Die fout heb ik in den beginne ook wel eens gemaakt :D en is het dus niet.

Verder voeg ik niet echt een regel aan het grid toe maar bind ik een nieuwe datasource die "toevallig" een regel langer is.

Ik heb zelf het gevoel dat ik de aangepaste grid in een vieuwstate oid moet opslaan voordat ik de html return