2012-03-26 40 views
0

我有一個datagridview,我想要顯示數據庫中的數據。但我不希望它顯示所有的數據。我希望它僅顯示特定ID的數據。這意味着如果用戶輸入3 ID,它將顯示該3 ID的信息。因此,我想使用富文本框作爲過濾器,以便用戶可以在富文本框中爲每行輸入多個ID。用戶可以在富文本框中輸入ID號,並將數據用作過濾器來顯示該特定ID的數據。但是我無法讓它超出富文本框的第一行。如果我在第一行中只輸入一個ID,它可以很好地工作,但如果我在第二行或第三行輸入第二個ID,則它不會顯示任何內容。我嘗試使用for循環來閱讀富文本框的每一行,但它不起作用。任何建議或解決方案? 這裏是我的代碼:如何使用從富文本框輸入的文本過濾datagridview?

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

我建議使用一個TextBox並設置MultiLinetrue

然後你可以閱讀所有這樣的標識:

string[] ids = myTextBox.Text.Split('\n'); 

編輯:

您可以使用SQL的IN找到的所有元素:

string sql = "SELECT conno, etc FROM BRDATA WHERE conno IN (" + String.Join(", ", ids) + ")"; 
+0

我需要把它放在一個for循環或者if else,因爲我想將文本框中的值傳遞給過濾器查詢。 – 2012-03-26 06:49:07

+0

更新了我的答案 – Bas 2012-03-27 13:43:38