簡體   English   中英

如何從數據網格中選擇一行並將其保存到.txt中

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

我有一個連接到SQL數據庫的DataGrid。 我可以在單行中顯示與ID相關聯的數據,我想通過單擊選擇該行,然后通過btnSave將該行的內容保存到.txt文件中。 這可能嗎?

以下是我的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>

這是我的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; 錯誤:“無法對類型為'System.Windows.Controls.DataGrid'的類型為'System.Windows.Controls.Button'的對象執行強制轉換

根據評論您正在嘗試將按鈕轉換為類到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