【问题标题】:C# Linq To SQL to Fill a DataGrid and and get fields into a TextBoxC# Linq To SQL 填充 DataGrid 并将字段放入 TextBox
【发布时间】:2019-03-05 04:20:02
【问题描述】:

在 C# 中,我可以轻松地从 SQL 数据库中获取数据,并使用以下代码将其放入 DataGrid 中:

 private void GetPcListBtn_Click(object sender, RoutedEventArgs e)
    {
        string service = (string)ServiceCB.SelectedValue;          
        comm = new SqlCommand("select T_COLLABORATEURS.CO_IDENT,T_PC.PC_ID,T_PC.PC_NOM,T_PC.PC_MODEL," +
            "T_PC.PC_DATE_MES,T_PC.PC_COMM,T_PC.SERV_ID from T_COLLABORATEURS, T_PC" +
            $" where T_COLLABORATEURS.CO_ID = T_PC.CO_ID and T_PC.SERV_ID = '{service}' ", conn);
        SqlDataAdapter dap = new SqlDataAdapter(comm);
        DataTable dt = new DataTable();
        dap.Fill(dt);
        PC_DT.ItemsSource = dt.DefaultView;
    }

然后在 Datagrid SelectionChanged 事件上,我可以单击一行以获取字段数据并将其放入带有此代码的 texbox 中:

// DataGrid SelectionChanged => Fill TexBox

           private void PC_DT_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (PC_DT.SelectedItem is DataRowView oData)
        {
            string pcNom = (string)oData["PC_NOM"];
            string pcModel = (string)oData["PC_MODEL"];
            RefPcTxtBox.Text = $"{pcNom} / {pcModel}";
        }
    }

现在在另一个应用程序中,我想使用 Linq To SQL 来做同样的事情。

填充数据网格:

// Fill DataGrid
      private void GetPcListBtn_Click(object sender, RoutedEventArgs e)
    {
        string service = (string)ServiceCB.SelectedValue;
        DataClasses1DataContext dc = new DataClasses1DataContext();
        var pcCo = from co in dc.T_COLLABORATEURS
                   join pc in dc.T_PC on co.CO_ID equals pc.CO_ID
                   where pc.SERV_ID == service
                   select new
                   {
                       pc.PC_ID,
                       co.CO_IDENT,
                       pc.PC_NOM,
                       pc.PC_MODEL,
                       pc.PC_DATE_MES,
                       pc.PC_COMM,
                       pc.SERV_ID
                   };
        PC_DT.ItemsSource = pcCo;
    }

但是现在如何通过单击 DataGrid 行来填充我的文本框??

  private void PC_DT_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
       // How to Fill my Textbox ??
    }

【问题讨论】:

    标签: c# sql linq-to-sql


    【解决方案1】:

    请试试这个。

    第一种方式:

    // Or whenever grid you want to use please set this type
    var Grid = sender as DataGrid; 
    if(Grid != null)
    {
      textbox  = Grid.FieldName
    }
    

    第二种方式:

    var currentRow = GridName.SelectedRows;
    if(currentRow != null)
    {
      textbox  = currentRow .FieldName
    }
    

    【讨论】:

    • 您好,谢谢您的回答,但在第一种方式中,我收到一个错误:“FieldName”在当前上下文中不退出
    • FieldName 表示在文本框中显示哪个字段 Ex:- Name (FieldName) then var aa =Grid.Name
    猜你喜欢
    • 1970-01-01
    • 2015-11-26
    • 2015-03-26
    • 1970-01-01
    • 2012-04-07
    • 2019-07-23
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多