Как работать с колонками в DataGridvew? - C#
Формулировка задачи:
Помогите сделать кнопку-обработчик полей в определенном столбце таблицы, загруженной из MS Excel, чтобы по части слова, если оно присутствует в поле, в другой столбец поля соответствующей строки, записывался соответствующий заданному поисковому отрезку слова класс. Например, мне нужно из товаров отобрать автотовары, и везде где встречаются отрывки «авто», «колес», «диск», но не встречается «двд», в последний столбец строк, в которых найдены эти фрагменты, записывалась категория «автотовары». Очень-очень буду благодарна, если подскажете! :smile
Данные на интерфейсе отображаю с помощью DataGridVew
Решение задачи: «Как работать с колонками в DataGridvew?»
textual
Листинг программы
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { private Microsoft.Office.Interop.Excel.Application ObjExcel; private Microsoft.Office.Interop.Excel.Workbook ObjWorkBook; private Microsoft.Office.Interop.Excel.Worksheet ObjWorkSheet; private string fileName; BindingSource bis = new BindingSource(); public static DataTable TABLE = new DataTable(); public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { fileName = System.Windows.Forms.Application.StartupPath + "\\" + textBox1.Text + ".xlsx"; try { ObjExcel = new Microsoft.Office.Interop.Excel.Application(); //Книга. ObjWorkBook = ObjExcel.Workbooks.Add(System.Reflection.Missing.Value); //Таблица. ObjWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)ObjWorkBook.Sheets[1]; for (int i = 0; i < TABLE.Rows.Count; i++) { DataRow row = TABLE.Rows[i]; // строки for (int j = 0; j < row.ItemArray.Length; j++) //цикл по ячейкам строки { ObjExcel.Cells[i + 1, j + 1] = row.ItemArray[j]; } } ObjWorkBook.SaveAs(fileName); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error"); } finally { { ObjWorkBook.Close(); // Закрытие приложения Excel. ObjExcel.Quit(); ObjWorkBook = null; ObjWorkSheet = null; ObjExcel = null; GC.Collect(); } } this.Text = this.Text + " - " + textBox1.Text + ".xlsx"; } private void button2_Click(object sender, EventArgs e) { OpenFileDialog openDialog = new OpenFileDialog(); openDialog.Filter = "Файл Excel|*.XLSX;*.XLS"; openDialog.ShowDialog(); try { ObjExcel = new Microsoft.Office.Interop.Excel.Application(); //Книга. ObjWorkBook = ObjExcel.Workbooks.Open(openDialog.FileName); //Таблица. ObjWorkSheet = ObjExcel.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet; Microsoft.Office.Interop.Excel.Range rg = null; Int32 row = 1; while (ObjWorkSheet.get_Range("a" + row, "a" + row).Value != null) { // Читаем данные из ячейки List<String> arr = new List<string>(); rg = ObjWorkSheet.get_Range("a" + row, "p" + row); foreach (Microsoft.Office.Interop.Excel.Range item in rg) { try { arr.Add(item.Value.ToString().Trim()); } catch { arr.Add(""); } } while (TABLE.Columns.Count < arr.Count) { TABLE.Columns.Add(); } TABLE.Rows.Add(arr.ToArray()); arr.Clear(); row++; } dataGridView1.DataSource = TABLE; MessageBox.Show("Файл успешно считан!", "Считывания excel файла", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show("Ошибка: " + ex.Message, "Ошибка при считывании excel файла", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { ObjWorkBook.Close(false, "", null); // Закрытие приложения Excel. ObjExcel.Quit(); ObjWorkBook = null; ObjWorkSheet = null; ObjExcel = null; GC.Collect(); } this.Text = this.Text + " - " + openDialog.SafeFileName; textBox1.Text = openDialog.SafeFileName; } private void button3_Click(object sender, EventArgs e) { TABLE.Columns[15].Expression = "IIF((([Наим. груза] LIKE '*диск*' OR [Наим. груза] LIKE '*авто*' OR [Наим. груза] LIKE '*колес*') AND NOT( [Наим. груза] LIKE '*двд*')), 'Автотовары', 'Остальная хрень')"; dataGridView1.Invalidate(); } private void Form1_Load(object sender, EventArgs e) { TABLE.Columns.Add ("ТТН №"); TABLE.Columns.Add ("Дата загрузки"); TABLE.Columns.Add ("Ст. отправления"); TABLE.Columns.Add ("Ст. назначения"); TABLE.Columns.Add ("Ст. оплаты"); TABLE.Columns.Add ("Наим. груза"); TABLE.Columns.Add ("Груз №"); TABLE.Columns.Add ("Отправитель"); TABLE.Columns.Add ("Получатель"); TABLE.Columns.Add ("Адрес отпр."); TABLE.Columns.Add ("Адрес получ."); TABLE.Columns.Add ("Кол-во мест"); TABLE.Columns.Add ("Вес"); TABLE.Columns.Add ("Объем"); TABLE.Columns.Add ("Сумм итого"); TABLE.Columns.Add ("Категория"); bis.DataMember = dataGridView1.DataMember; bis.DataSource = TABLE; } private void button4_Click(object sender, EventArgs e) { try { bis.Filter = string.Format("[{0}] LIKE '*{1}*'", TABLE.Columns[Int32.Parse(textBox3.Text)-1].ColumnName, textBox2.Text); } catch { } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д