2017-01-11 1 views
1

Ich habe ein Bearbeitungsformular, das eine DropDownList verwendet, verbunden mit einer SQL-Server-Tabelle mit einer DataSource. Mit diesem Bearbeitungsformular können Benutzer den Spaltenwert "IsDeleted" der Tabelle auf 1 setzen, der sie dann vor allen Abfragen der Anwendung verbergen würde. (So ​​ist die Transaktion immer noch in der Datenbank vorhanden, aber nicht in der Anwendung)Aktualisieren der DataSource einer DropDownList in ASP.NET C#

Das Problem, das ich dabei festgestellt habe, ist, dass, wenn die Seite, auf der das Bearbeitungsformular ist nicht vollständig verlassen, und dann erneut eingegeben wird Der Eintrag bleibt in der DataSource erhalten.

Im Wesentlichen wird die DataSource nicht aktualisiert. (Es führt seine select-Anweisung nicht aus und repopuliert nicht, bis die gesamte Seite neu geladen ist). Ich habe versucht, eine Seitenaktualisierung zu verwenden und es scheint nicht zu funktionieren, nur zu einer anderen Seite vollständig zu gehen und dann wieder zu kommen, scheint die DataSource zu aktualisieren.

Wie würde ich den Inhalt der DataSource programmatisch aktualisieren, ohne die gesamte DataSource selbst neu erstellen zu müssen?

Antwort

0

Also habe ich irgendwann auf das zurückgegriffen, was ich nicht tun wollte, in der Hoffnung, dass es einen "Best-Practice" Weg geben würde (und hoffentlich bereits in DataSources integriert), aber es scheint so war nicht zu sein.

Es war nur nötig, die Parameter der DataSource erneut zuzuweisen und dann die DataSource wieder der DropDownList zuzuordnen, als ob ich eine neue erstellen würde.

Ich habe die folgende Methode erstellt, die ich dann am Ende des Ereignisses meiner Löschtaste aufgerufen habe.

protected void DropDownList_Reload() 
    { 
     MyDataSource.ConnectionString = ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString; 
     MyDataSource.SelectCommand = "SELECT * FROM [tblMyTable] WHERE [IsDeleted] <> 1"; 

     cbxDropDownList.DataSourceID = "MyDataSource"; 
     cbxDropDownList.DataTextField = "MyHeader"; 
     cbxDropDownList.DataValueField = "MyHeader"; 
    } 
0

Möglicherweise möchten Sie beim nächsten Mal Code hinzufügen. Meine beste Schätzung für jetzt ist, dass Sie nichts OnPostback tun.

+0

Ich habe buchstäblich keinen Code für die DataSource und DDL zu diesem Zeitpunkt über die ASP-Markup des Designers hinaus. (Ich ignoriere das SelectedIndexChanged-Ereignis in der DDL, das einige Textfelder auffüllt, aber das hat nichts mit der Frage zu tun.) Das heißt, ich habe etwas über diese Postback-Sache gelesen und es sieht so aus als gäbe es ein riesiges Loch in meinem Wissen über das Thema . Ich hoffe, du hast mich auf einen Weg geführt, der es mir ermöglicht, etwas zu finden, das mein Problem anspricht. Aber am Ende bin ich auf der Suche nach einem programmatischen Weg zu tun, was Sie im Designer tun, wenn Sie auf "Schema aktualisieren" – Eisen

+0

Sie möchten vielleicht zur Kasse [link] https://www.asp.net/web- Formen –

Verwandte Themen