Это мой первый вопрос о stackoverflow, и я совершенно новичок в программировании на C#, поэтому, пожалуйста, несите меня. Я создал приложение с использованием WPF, в котором я отобразил список файлов с расширением .rpt в datagrid. В файле данных содержится список имен файлов, а также столбец флажка в datagrid. Эти файлы динамически заполняются в сетке из браузера папок, когда я нажимаю кнопку. Я застрял на части отвлечения этих файлов для печати, когда я нажимаю вторую кнопку (печать, поскольку мне нужно вызвать службу для печати выбранных файлов).Получение выбранных строк файлов отчетов из WPF Datagrid при нажатии кнопки
Это фрагмент кода, который я не пытался до сих пор:
public partial class MainWindow : Window
{
public class ReportFile
{
public string Path { get; set; }
public string FileName { get; set; }
}
private void Button_Click(object sender, RoutedEventArgs e)
{
string inputPath = AppDomain.CurrentDomain.BaseDirectory;
System.Windows.Forms.FolderBrowserDialog fldDlg = new System.Windows.Forms.FolderBrowserDialog();
fldDlg.SelectedPath = AppDomain.CurrentDomain.BaseDirectory;
DialogResult result = fldDlg.ShowDialog();
foreach (string str in Directory.GetFiles(fldDlg.SelectedPath))
{
ReportFile reportFile = new ReportFile();
reportFile.Path = str;
reportFile.FileName = System.IO.Path.GetFileName(str);
dataGrid1.Items.Add(reportFile);
}
}
private void button_Click_1(object sender, RoutedEventArgs e)
{
foreach (ReportFile drv in dataGrid1.SelectedItems.OfType<ReportFile>())
{
if (drv != null)
{
DataRow row = drv.Row;
Title = row.ItemArray[3].ToString();
System.Windows.MessageBox.Show(Title.ToString());
}
}
var TransactionFactory = new TransactionFactory();
var Transaction = TransactionFactory.NewTransactionString();
var EnvironmentValue = (string)cmbEnvironment.SelectedValue;
var CirieEngineServiceClientFactory = new CirieEngineServiceClientFactory(EnvironmentValue);
var CirieEngineServiceClient = CirieEngineServiceClientFactory.NewCirieEngineServiceClient();
var Form = new Cirie.Form()
{
Path = string.Empty,
Title = string.Empty
};
var PackageID = Convert.ToInt16(txtPackageID.SelectedText);
var Generation = Convert.ToInt16(txtGeneration.SelectedText);
var formList = new List<Cirie.Form>();
var stream = CirieEngineServiceClient.PrintFormCollection
(Transaction,
new Collection<Cirie.Form>(formList),
PackageID,
Generation
);
}
}
Но я не уверен, если это правильно, так как есть исключение бросают: Не удалось привести объект типа «ReportFile» в type 'System.Data.DataRowView'
Я очень благодарен за помощь в этом!
Эта ошибка устранена! Спасибо. Я также хотел знать, как я могу получить данные и отправить их в службу печати при нажатии кнопки. Поскольку код, который у меня есть сейчас, позволяет отображать извлеченные файлы в окне сообщения. – user0594
Я, хотя я уже ответил, как получить данные? Или какие данные вы имеете в виду? – mm8
Я отредактировал свой вопрос и добавил код позади, если это поможет понять, что именно я ищу. – user0594