我有一个datagridview,我想显示数据库中的数据。但我不希望它显示所有数据。我希望它只显示特定ID的数据。意味着如果用户输入3 ID,它将显示该3 ID的信息。因此,我想使用富文本框作为过滤器,以便用户可以在富文本框中为每一行输入多个ID。用户可以在富文本框中输入ID号,数据将用作过滤器以显示该特定ID的数据。但我不能让它超越富文本框的第一行。如果我在第一行中只输入一个ID,它可以正常工作,但如果我在第二行或第三行输入第二个ID,那么它根本不会显示任何内容。我尝试使用for循环来读取富文本框的每一行,但它不起作用。任何建议或解决方案? 这是我的代码:
namespace TrackCon
{
public partial class trackInput : Form
{
public trackInput()
{
InitializeComponent();
}
/*private void trackInput_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'trackingBMSDATADataSet.BRDATA' table. You can move, or remove it, as needed.
this.bRDATATableAdapter.Fill(this.trackingBMSDATADataSet.BRDATA);
}*/
private void trackBtn_Click(object sender, EventArgs e)
{
RichTextBox dynamicRichTextBox = new RichTextBox();
DataTable dt = null;
string connoInput = richTextBox1.Text;
string conString = Properties.Settings.Default.BMSDATAConnectionString;
//string[] RichTextBoxLines = dynamicRichTextBox.Lines;
foreach (char line in richTextBox1.Text)
{
using (SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\TrackCon\TrackCon\BMSDATA.sdf;Persist Security Info = True;Password=xxxx"))
{
con.Open();
SqlCeCommand com = new SqlCeCommand("SELECT conno,cmpsno,ctrx,dsysdate,cstnno,corigin FROM BRDATA WHERE conno = '" + richTextBox1.Text + "'OR cmpsno = '" + richTextBox1.Text + "'", con);
SqlCeDataAdapter adap = new SqlCeDataAdapter(com);
DataSet set = new DataSet();
adap.Fill(set);
if (set.Tables.Count > 0)
{
dt = set.Tables[0];
}
dataGridView1.DataSource = dt;
con.Close();
}
}
}
}
}
答案 0 :(得分:0)
我建议您使用TextBox
并将MultiLine
设置为true
。
然后你可以阅读所有这样的ID:
string[] ids = myTextBox.Text.Split('\n');
编辑:
您可以使用SQL的IN来查找所有元素:
string sql = "SELECT conno, etc FROM BRDATA WHERE conno IN (" + String.Join(", ", ids) + ")";