2016-10-03 54 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