【问题标题】:Show Linq-to-SQL table rows in separate text boxes在单独的文本框中显示 Linq-to-SQL 表行
【发布时间】:2016-10-13 07:00:24
【问题描述】:

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

我们说我有下表:

tblNVR 频道

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),但我想要文本框 1 中的 Kam1-74 , textbox2 中的 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;

【问题讨论】:

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


    【解决方案1】:

    试试这个代码。

    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);
        }
    

    根据您的要求更改您的代码。

    【讨论】:

    • 我喜欢您的代码,但在 c.Text 中出现错误,(控件不包含 Text 的定义。
    • @S.A.Khalili 使用 c.text
    • .text 不在 Visual Studios 智能感知中
    • 谢谢我也接受你的解决方案,但我已经为此目的使用了 Gilads 代码。现在我正在尝试使用您的代码来更新表格,尽管有一点问题。我在这里发布了我的问题:[link](stackoverflow.com/questions/40037878/…)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    相关资源
    最近更新 更多