在单独的文本框中显示Linq-to-SQL表行

时间:2016-10-13 07:00:24

标签: c# asp.net linq-to-sql webforms

我有一个数组,它从Linq-to-SQL查询中获取数据。我正在使用ASP.NET Webforms。

我们说我有下表:

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),但我想在textbox1中使用Kam1-74 ,text2中的kam2-75等等。

有一些使用FirstOrDefault()的例子,但是当我尝试它时,我只得到第一行对我不起作用,虽然我不确定。

Populating textboxes using LINQ2SQLLinq 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;

1 个答案:

答案 0 :(得分: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);
    }

根据您的要求更改代码。