2016-10-13 7 views
1

У меня есть массив, где он получает свои данные из запроса Linq-to-SQL. Я использую ASP.NET Webforms.Показать строки таблицы Linq-to-SQL в отдельных текстовых полях

Мы говорим, у меня есть следующая таблица:

tblNVRchannels:

ID  fltNVR  fltNamn 
1  75   Kam1-75 
2  75   Kam2-75 
3  75   Kam3-75 
4  75   Kam4-75 
5  76   Kam1-76 
6  76   Kam2-76 
7  76   Kam3-76 

C# коды:

using (myDataContext sls = new myDataContext()) 
{ 
    IQueryable<tblNVRChannel> channels= (from channel in sls.tblNVRChannels 
             where kanal.fltNVR == 75 
             select channel); 

    tblNVRChannel[] kanArray = channels.ToArray(); 

    foreach (var item in channelArray) 
    { 
     TextBox1.Text = item.fltNamn; 
     TextBox2.Text = item.fltNamn; 
     TextBox3.Text = item.fltNamn; 
     TextBox4.Text = item.fltNamn; 
     TextBox5.Text = item.fltNamn; 
    } 
} 

Использование выше запроса я получаю значение из таблицы, но я не могу показать каждый элемент в отдельных текстовых блоках, я получаю последний элемент запроса (Kam4-75) в каждом текстовом поле, но я хочу, чтобы Kam1-74 в текстовом поле1, kam2-75 в текстовом поле2 и т. д.

Есть несколько примеров, используя FirstOrDefault(), но когда я попробовал, я получаю только первую строку, которая не работает для меня, хотя я не уверен.

Populating textboxes using LINQ2SQL и Linq to Sql: How to Fetch specific row using stored procedure and display columns data into textboxes

Я попытался назначить TextBox.Text данные, используя петлю, но я не мог.

Я хочу что-то вроде ниже конечный результат:

TextBox1.Text = kam1-75; 
    TextBox2.Text = kam2-75; 
    TextBox3.Text = kam3-75; 
    TextBox4.Text = kam4-75; 
    TextBox5.Text = NULL; 

ответ

0

Попробуйте этот код.

using (myDataContext sls = new myDataContext()) 
{ 
IQueryable<tblNVRChannel> channels= (from channel in sls.tblNVRChannels 
            where kanal.fltNVR == 75 
            select channel); 
tblNVRChannel[] kanArray = channels.ToArray(); 
var textbox = GetAll(this, typeof(TextBox)); 
     // Do whatever you want to do with your textbox. 
     foreach (var item in channelArray) 
     { 
      foreach(Control c in textbox) 
      { 
       if (c is TextBox) 
       { 
        var tx = ((TextBox) x); 
        if (string.IsNullOrEmpty(tx.Text)) 
        { 
         tx.Text = item.fltNamn; 
         break; 
        } 
       } 
      } 
     } 

} 

public IEnumerable<Control> GetAll(Control control, Type type) 
    { 
     var controls = control.Controls.Cast<Control>(); 

     return controls.SelectMany(ctrl => GetAll(ctrl, type)) 
            .Concat(controls) 
            .Where(c => c.GetType() == type); 
    } 

Внесите изменения в свой код в соответствии с вашими требованиями.

+0

мне понравился ваш код, но получил сообщение об ошибке в c.Text (Control не содержит definatio для текста. –

+0

@SAKhalili использовать c.text –

+0

.text не в визуальной студии IntelliSense –

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

  • Нет связанных вопросов^_^