2015-10-06 3 views
0

Я хотел бы найти мой DataSet для имени клиента, это имя будет происходить более одного раза в течение всего набора данных, то есть будет более одного результата (несколько строк возвращены)Поиск данных и отображение нескольких результатов (строк) в TextBoxes

Когда нажата кнопка поиска, форма 2 открывается и теоретически должна отображать все строки, содержащие имя клиента, но как это сделать?

Я могу получить его для отображения 1 строки без проблем, но как бы я мог отображать все строки и данные в текстовых окнах.

В настоящее время я использую цикл foreach для заполнения текстовых полей с возвращенными данными, но это только принимает данные из 1 строки в моем DataSet.

Есть ли способ, которым я могу сделать свою форму автоматической генерации текстовых полей и заполнить их всеми данными из массива? Когда я запускаю свой запрос в настоящий момент, он заполняет текстовые поля формы2 последним вращением foreach.

DB Sample

Цените помощь

Адам

DataRow[] returnedRows; 

     returnedRows = ds.Tables["Table_Data_1"].Select("cust_name='" + searchFor + "'"); 

     foreach (DataRow returned in returnedRows) 
     { 
      tbName.Text = returned[1].ToString(); 
      tbAddress.Text = returned[2].ToString(); 
      tbPhone.Text = returned[3].ToString(); 

      tbMake.Text = returned[4].ToString(); 
      tbModel.Text = returned[5].ToString(); 
      tbReg.Text = returned[6].ToString(); 
      tbYear.Text = returned[7].ToString(); 

      tbParts1.Text = returned[8].ToString(); 
      tbParts2.Text = returned[9].ToString(); 
      tbParts3.Text = returned[10].ToString(); 
      tbParts3.Text = returned[11].ToString(); 
     } 
+1

Почему бы не использовать, например, datagriview для отображения всех строк, которые вы получили в вашем наборе данных? В текстовом поле будет отображаться одно значение не несколько. Ты подумал ? – VERYNET

ответ

1

Причина вы только что одно значение появляется в том, что вы устанавливаете текст ваших текстовых полей на новый значение для каждой выбранной строки. Вы можете изменить свой код вместо добавления к тексту в текстовых полей:

tbName.Text += returned[1].ToString() + Environment.NewLine; 

Или вы могли бы вместо того, чтобы привязать его к DataGridView, который предназначен для отображения табличных данных. Предполагая, что DataGridView был назван что-то вроде customerDataView,

returnedRows = ds.Tables["Table_Data_1"].Select("cust_name='" + searchFor + "'"); 
var newTable = returnedRows.CopyToDataTable(); 
BindingSource bindSource = new BindingSource(); 
bindSource.DataSource = newTable; 
var customerDataView.DataSource = bindSource; 
+0

Отличная работа, спасибо! Мне пришлось немного изменить этот код, удалив var из последних 3 строк и добавив BingingSource в начале строки 3. – Nezz

+0

Я рад, что это помогло. Если это ответит на ваш вопрос, отметьте ответ как принятый :) –

0

Вы можете создавать текстовые поля dinamicaly Его что-то вроде этого

foreach (DataRow returned in returnedRows) 
{ 
    TextBox txt = new TextBox(); 
    txt.ID = "textBox1"; //generate id dinamically can be a count 
    txt.Text = returned[1].ToString(); 
    form1.Controls.Add(txt); 
} 

так, как вы реализованный цикл переопределения данных в каждом Интерактивного

Я улучшил код образца после этого сообщения

https://stackoverflow.com/a/2229040/5252904 ответить pr ovided by @rahul.

Смежные вопросы