2016-10-03 1 views
0

Auf einer asp.net Web-Formular, ich habe: mehrzeiliges TextBox Taste Gridasp.net: Wie Eingang Table Abfrage von mehrzeiligen TextBox passieren

Die TextBox ist der Eintrag für PRODUCT_ID. Wenn in TextBox PRODUCT_ID eingegeben wird und die Schaltfläche geklickt wird, werden Zeilen aus der Product-Tabelle zurückgegeben und in GridView angezeigt.

Ich habe DataSet mit TableAdapter erstellt. Hier ist die Abfrage für die Get-Methode:

SELECT  PRODUCT_ID, PRODUCT_NAME 
FROM   TEST.PRODUCT 
WHERE  (PRODUCT_ID = ?) 

Hier ist der Code:

protected void Button2_Click (object sender, EventArgs e) { kurz id = short.Parse (TextBox2.Text);

MyDataSetTableAdapters.PRODUCTTableAdapter idDS = new PRODUCTTableAdapter(); 

    MyDataSet.PRODUCTDataTable idDT = idDS.GetID(id); 

    GridView2.DataSource = idDT; 
    GridView2.DataBind(); 
} 

Es funktioniert, wenn ich nur eine PRODUCT_ID in der TextBox eingeben. Beispiel:

Wenn ich "8" eingeben, wird eine Zeile aus der Tabelle PRODUCT angezeigt, wobei PRODUCT_ID = 8;
wenn I „9“ einzugeben, wird es Zeile aus Tabelle PRODUCT wo PRODUCT_ID = 9.

Die Idee ist, einzugeben PRODUCT_ID in dem Text (eine oder mehrere) und die Anzeige passenden Zeilen in Grid anzuzeigen.

Allerdings, wenn ich versuche, mehr als ID in TextBox eingeben, zum Beispiel: (dann auf die Schaltfläche klicken)

Es funktioniert nicht.

Fehlermeldung sagt - { "Eingabezeichenfolge nicht in einem korrekten Format ist."}

Wie gebe ich eine Eingabe von mehrzeiligen TextBox Tableadapter-Abfrage?

Antwort

0

Sie müssen Ihr Code-Design ein wenig ändern.

Ändern Sie zuerst die Methode GetID, um eine Zeichenfolge zu akzeptieren.

Zweitens, ändern Sie Ihre multiLine Textbox-Eingabe in Komma getrennte Zeichenfolge.

string ids= string.Join(",", TextBox1.Text.Split(' ')); 

Drittens, ändern Sie Ihre SQL-Abfrage where-Klausel.

SELECT  PRODUCT_ID, PRODUCT_NAME 
FROM   TEST.PRODUCT 
WHERE  (PRODUCT_ID in (ids)) 

Hoffe, das hilft.

+0

Danke! Die Lösung macht Sinn. Ich habe jedoch Probleme mit der SQL-Abfrage. Im TabellenAdapter Query Configuration Wizard -> Query Builder tippte ich "SELECT PRODUCT_ID, PRODUCT_NAME VON TEST.PRODUCT WHERE (PRODUCT_ID in (?))" – user6913632

+0

Dann klicken Sie auf "Abfrage ausführen". Im Popup-Fenster "Query Parameter", als ich "8" eingegeben habe (keine doppelten Anführungszeichen), funktionierte es; Als ich "8,9" eingegeben habe, ist ein Fehler aufgetreten - "Ungültiger Wert für Zelle (Zeile 1, Spalte 2).Der geänderte Wert in dieser Zelle wurde nicht als gültig erkannt. .Net Framework Datentyp: Int32 ". PRODUCT_ID ist smallint. Ich versuche verschiedene Parametereigenschaften (Parameter Collection Editor) ... – user6913632

+0

Als nächstes werde ich versuchen, den Code direkt im Code hinter Button1_Click() hinzufügen. – user6913632

Verwandte Themen