简体   繁体   English

如何从数据网格中选择一行并将其保存到.txt中

[英]How to select a row from a datagrid and save it into a .txt

I have a DataGrid connected to a SQL database. 我有一个连接到SQL数据库的DataGrid。 I can show in a single row the data associated to an id, I want to select that row by clicking on it and, through a btnSave , save the content of that row into a .txt file. 我可以在单行中显示与ID相关联的数据,我想通过单击选择该行,然后通过btnSave将该行的内容保存到.txt文件中。 Is this possible? 这可能吗?

Below is the XAML for my DataGrid: 以下是我的DataGrid的XAML:

<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False"  Margin="0,54,0,31" x:Name="STable" IsReadOnly="True" VerticalScrollBarVisibility="Visible" ScrollViewer.CanContentScroll="False" ColumnWidth="Auto">
<DataGrid.Columns>
    <DataGridTextColumn x:Name="StatTableNItemColumn" Header="N" Binding="{Binding NItem, BindsDirectlyToSource=True}" />
    <DataGridTextColumn x:Name="StatTablePSEColumn" Header="P" Binding="{Binding P, BindsDirectlyToSource=True}" />
    <DataGridTextColumn x:Name="StatTableDStartColumn" Header="Start" HeaderStringFormat="dd-MM-yyyy" Binding="{Binding DStart, BindsDirectlyToSource=True, StringFormat=\{0:dd-MM-yyyy\}}"/>
    <DataGridTextColumn x:Name="StatTableDEndSEColumn" Header="End" HeaderStringFormat="dd-MM-yyyy" Binding="{Binding DEnd, StringFormat=\{0:dd-MM-yyyy\}}" />
    <DataGridTextColumn x:Name="StatTableRItemColumn" Header="R" Binding="{Binding RItem}" />
    <DataGridTextColumn x:Name="StatTableRepColumn" Header="Rep" Binding="{Binding Rep}" />
</DataGrid.Columns>

This is the code for my btnSave.OnClick event handler: 这是我的btnSave.OnClick事件处理程序的代码:

private void BtnSaveStat_Click(object sender, RoutedEventArgs e)
{


  if (StatTable.SelectedItem == null)
    return;
  var itemSelected = StatTable.SelectedItem;


  if (!Directory.Exists(@"D:/ReportStatistics"))
  {
    Directory.CreateDirectory(@"D:/ReportStatistics");
  }
  try
  {

    sqliteCon.Open();

    var filename = string.Concat("Filename", DateTime.Now.ToString("ddMMyyHHmmss"), ".txt");//THIS STRING ALLOW TO BUILD FILES EVERY TIME THE USER CHANGE ITEM AND WANTO TO PRINT IT

    //DONE: SAVE PER ID
    string query =
    @"SELECT  tabS.NItem
                FROM  tabS
                WHERE  tabS.NItem LIKE @prmNome";


    using (SqlCommand command = new SqlCommand(query, sqliteCon))
    {
      command.Parameters.AddWithValue("@prmNome", this.txtSrcVR.Text);


      using (var reader = command.ExecuteReader())
      {

        string file = Path.Combine(@"D:\Reports", filename);

        using (TextWriter tw1 = new StreamWriter(file, true))
        {
          while (reader.Read())
          {

            string datoN = Convert.ToString(reader[0]);

            tw1.WriteLine(datoN);
          }
        }
      }

    }



    MessageBox.Show("File Created Successfully");
  }
  catch (Exception ex)
  {
    MessageBox.Show(ex.Message);
  }
  sqliteCon.Close();

}

DataGrid gd=(Datagrid)sender; DataGrid gd =(Datagrid)sender; ERROR:'Impossible to execute the cast of objects of type 'System.Windows.Controls.Button' on typoe'System.Windows.Controls.DataGrid' 错误:“无法对类型为'System.Windows.Controls.DataGrid'的类型为'System.Windows.Controls.Button'的对象执行强制转换

As per the comment you are trying to convert button to class to DataGrid so 根据评论您正在尝试将按钮转换为类到DataGrid

private void BtnSaveStat_Click(object sender, RoutedEventArgs e)
{
    if(STable.SelectedItem==null)
        return;
    var itemSelected= STable.SelectedItem

    if (!Directory.Exists(@"D:/ReportStatistics"))
    {
        Directory.CreateDirectory(@"D:/ReportStatistics");
    }
private void BtnSaveStat_Click(object sender, RoutedEventArgs e)
{


  if (StatTable.SelectedItem == null)
    return;


  var filename = string.Concat("Filename", DateTime.Now.ToString("ddMMyyHHmmss"), ".txt");//THIS STRING ALLOW TO BUILD FILES EVERY TIME THE USER CHANGE ITEM AND WANTO TO PRINT IT

  DataRowView var3 = (DataRowView)StatTable.SelectedItem;

  string nome = var3.Row["NItem"].ToString();
  string path = var3.Row["P"].ToString();
  string datS = var3.Row["DStart"].ToString();
  string datE = var3.Row["DEnd"].ToString();
  string ResI = var3.Row["RItem"].ToString();
  string Rep = var3.Row["Rep"].ToString();


  if (!Directory.Exists(@"D:/ReportStatistics"))
  {
    Directory.CreateDirectory(@"D:/ReportStatistics");
  }

  string file = Path.Combine(@"D:/ReportStatistics", filename);

  using (TextWriter tw1 = new StreamWriter(file, true))
  {

      tw1.WriteLine(nome+" "+path+" "+ datS+" "+datE+" "+ ResI+" "+ Rep);


  }

  MessageBox.Show("Line Saved");

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM