Как выбрать строку из сетки данных и сохранить ее в .txt - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть DataGrid, подключенный к базе данных SQL. Я могу показать в одной строке данные, связанные с идентификатором, хочу выбрать эту строку, щелкнув по ней, и через btnSave сохранить содержимое этой строки в файл .txt. Возможно ли это?

Ниже XAML для моей DataGrid:

<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>

Это код моего 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();

}

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

DataGrid gd = (Datagrid) отправитель; ОШИБКА: «Невозможно выполнить приведение объекты типа 'System.Windows.Controls.Button' на typoe'System.Windows.Controls.DataGrid '

Согласно комментарию вы пытаетесь преобразовать кнопку в класс в 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");
    }
0 голосов
/ 12 апреля 2019
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");

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...