2016-10-03 63 views
0

在一個asp.net web表單,我有: 多行TextBox 按鈕 的GridViewasp.net:如何通過從多行TextBox輸入的TableAdapter查詢

文本框是PRODUCT_ID的條目。當在文本框中輸入PRODUCT_ID並點擊按鈕時,它將返回產品表中的行並顯示在GridView中。

我用TableAdapter創建了DataSet。下面是Get方法的查詢:

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

下面的代碼:

保護無效Button2_Click(對象發件人,EventArgs的) { 短ID = short.Parse(TextBox2.Text);

MyDataSetTableAdapters.PRODUCTTableAdapter idDS = new PRODUCTTableAdapter(); 

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

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

它在我只在文本框中輸入一個PRODUCT_ID時有效。例如,

如果我輸入「8」,它將顯示來自PRODUCT表的行,其中PRODUCT_ID = 8;
如果我輸入「9」時,它會從產品表,其中PRODUCT_ID = 9.

的想法是在TextBox(一個或多個)和顯示匹配的行中的GridView進入PRODUCT_ID顯示行。

然而,當我試圖比ID在文本框中輸入更多,例如:(然後點擊按鈕)

它沒有工作。

錯誤消息稱 - {「輸入字符串的不正確的格式。」}

我如何通過從多行TextBox輸入的TableAdapter查詢?

回答

0

您需要稍微更改您的代碼設計。

首先,改變你的方法GetID接受一個字符串。

public void GetID(string ids) 
{ 
    //your code 
} 

其次,將多行文本框輸入更改爲以逗號分隔的字符串。

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

三,改變你的SQL查詢where子句。

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

希望這會有所幫助。

+0

謝謝!解決方案很有意義。但是,我遇到了SQL查詢的問題。在TableAdapter查詢配置嚮導 - >查詢生成器中,我在「SELECT PRODUCT_ID,PRODUCT_NAME」中輸入 FROM TEST.PRODUCT WHERE(PRODUCT_ID in(?))「 – user6913632

+0

然後單擊」執行查詢「。在「查詢參數」彈出窗口中,當我輸入「8」(條目中沒有雙引號)時,它起作用;當我輸入「8,9」時,出現錯誤 - 「單元格的值無效(第1行,第2列)。該單元格中更改的值未被重新組合爲有效。 .Net Framework數據類型:Int32「。PRODUCT_ID是smallint。我試着使用不同的參數屬性(參數集合編輯器)... – user6913632

+0

接下來,我將嘗試直接在Button1_Click()後面的代碼中添加代碼。 – user6913632