2009-06-23 4 views
0

Ich habe eine Liste von Nachrichten (es könnte 24 oder 100+ sein). Ich müsste viele dieser Nachrichten entfernen. Ich habe mich gefragt, was ist der beste Weg? Ich mag nicht die Idee, Namen für 100+ Elemente zu erstellen und so etwas wie doRemove = Request ["msgId" + i];Wie soll ich 100 Checkboxen posten/bearbeiten? HTML + C#/ASP.NET

Ich ziehe ein Array erhalten wie lange [] und etwas tun, wie

long[] removeThese = Request["remove"]; 
foreach .... 
    //DELETE msgId WHERE [email protected] 

aber ich weiß nicht, ob ein Array erstellen und POSTen es mit HTML möglich ist (und grundlegende Javascript?) Oder wenn ihr die beste Lösung. Wie soll ich das machen?

+0

Durch besten Weg, meinen Sie die schnellste für Sie zu bearbeiten oder am einfachsten zu schreiben? :-) –

Antwort

1

Ich würde eine <asp:CheckBoxList /> dort aufschlagen und wenn Sie Änderungen übermitteln müssen, nehmen Sie einfach den .SelectedValue und übergeben Sie es in Ihren SQL-Parameter (wo auch immer das getan wird).

Wenn Sie auf SQL 2008 sind, können Sie die Vorteile von "Table-Valued Paramaters" (einfach googlen) nutzen, die Sie einfach IEnumerable (so ziemlich jede Sammlung) in der Variable übergeben und Sie können einfach dazu in verbinden Ihre Abfrage UPDATE/DELETE/etc.

Vorherige Versionen von SQL, der Ansatz, den ich verwende, ist sehr ähnlich, nur die Zeichenfolge/VARCHAR wird an die Abfrage übergeben und Sie müssen eine Tabellenvariable oder temporäre Tabelle erstellen, die Werte aus einer Split-Prozedur eingefügt. Es gibt viele Möglichkeiten, die Split-Prozedur zu erstellen, aber ich habe herausgefunden, dass der Numbers-Table-Ansatz in allen SQL-Versionen funktioniert und eine ziemlich gute Performance hat. Siehe http://www.sommarskog.se/arrays-in-sql-2005.html für eine erschöpfende Bezugnahme auf die möglichen Auswirkungen auf die Leistung jedes Ansatzes.

Sagen Sie einfach nein zu ' IN (' + @MyValuesCSV + ')' :-)

0

Wenn Sie sich für eine „leichte“ Lösung suchen, sind Sie immer einen versteckten HTML-Variable ein Javascript-Ereignis für jede Checkbox haben könnten, und weisen, dass der Index/id auf die Variable hinzuzufügt, ein Komma zu schaffen Begrenzte Liste der zu verarbeitenden IDs.

Dann, wenn das Senden/Bestätigen auftritt, können Sie Ihren Code hinter Seite greifen diese Zeichenfolge, wandeln Sie es in eine Liste/Array/Was auch immer funktioniert am besten für Ihre Verarbeitung und beenden Sie die Dinge.

Verwandte Themen