如何使用从富文本框输入的文本过滤datagridview?

时间:2012-03-26 06:42:01

标签: c#-3.0

我有一个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();
            }
        }

    }
}

}

1 个答案:

答案 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) + ")";