[英]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.