Как отфильтровать сетку данных, используя текст, введенный из расширенного текстового поля? - PullRequest
0 голосов
/ 26 марта 2012

У меня есть сетевое представление, в котором я хочу отобразить данные из базы данных.Но я не хочу, чтобы он отображал все данные.Я хочу, чтобы он отображал данные только для определенного идентификатора.Это означает, что если пользователь вводит 3 ID, он отображает информацию для этого 3 ID.Поэтому я хочу использовать поле расширенного текста в качестве фильтра, чтобы пользователь мог ввести несколько идентификаторов для каждой строки в поле расширенного текста.Пользователь может ввести идентификационный номер в поле расширенного текста, и данные будут использоваться в качестве фильтра для отображения данных для этого конкретного идентификатора.Но я не могу заставить его читать за пределами первой строки текстового поля.Если я введу только один идентификатор в первой строке, он будет работать отлично, но если я введу второй идентификатор во второй строке или в третьей строке, он вообще ничего не отобразит.Я попытался использовать цикл для чтения каждой строки в поле расширенного текста, но это не работает.Любой совет или решение ??вот мой код:

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 голосов
/ 26 марта 2012

Я предлагаю использовать TextBox и установить MultiLine на true.

Тогда вы можете прочитать все идентификаторы, как это:

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

EDIT:

Вы можете использовать IN для SQL, чтобы найти все элементы:

string sql = "SELECT conno, etc FROM BRDATA WHERE conno IN (" + String.Join(", ", ids) + ")";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...