Wpf gridview с флажком: получение выбранных строк файлов отчетов при нажатии кнопки
Я создал приложение с использованием WPF, в котором кнопка (выбрать) открывает обозреватель папок в папке по указанному по умолчанию / указанному пути, указанному в текстовом поле, а таблица данных заполняется всеми файлами в этой папке (файлы .rpt). Столбцы в сетке данных - это путь, имя файла, а также есть столбец для флажка. Я хочу получить файлы, которые я выбираю в сетке данных с помощью флажка, и это должно быть сделано, нажав кнопку, поскольку кнопка отправит эти файлы Код, который я придумал, мне удалось отобразить путь к выбранному файлу в окне сообщения, но я застрял на том, как извлечь эти файлы из сетки и отправить их в службу печати с помощью этого нажатия кнопки . Так что в основном у меня две проблемы:
1. флажок отображает не все проверенные строки, а только первую / последнюю выбранную строку
2. я хочу извлечь имя файла/путь к файлу в зависимости от того, что работает, чтобы получить файлы для отправки в службу печати
Что я уже пробовал:
namespace DataGridCheckBoxDisplayApp { 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) { string path = drv.Path; //drv.Path = drv.ItemArray[3].ToString(); System.Windows.MessageBox.Show(drv.Path); } } 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 ); } } }
Graeme_Grant
Вы используете GridView или DataGrid? Без XAML-код, ваш код предполагает, элемент управления DataGrid.