Shaheer Rizwan Ответов: 1

Как мне добавить строки из datagridview в XML-файл и загрузить его снова


У меня есть DataGridView, который вручную добавляет столбцы (то есть вводится через DataGridView, а не код), я хочу знать, как я могу просто сохранить добавленные строки из текстовых полей в XML-файлы с помощью кнопки, чтобы они могли сохраняться и загружаться, когда пользователь снова открывает приложение.

Вот как выглядит моя форма для справки (если это поможет):
Общий список задач - альбом на Imgur[^]


Спасибо!

Что я уже пробовал:

Приведенный ниже код-это то, что я использовал для добавления свойств textbox/combobox в таблицу it self.



Private Sub btnAddTask_Click(sender As Object, e As EventArgs) Handles btnAddTask.Click
    ' PURPOSE: To add a New Task to the General Task List
    ' INPUTS: Task Name (as text), Task Tags (as text), Priority Level (as Integer), Due Date (as Date), Helpful Link (as text), Note Entry (as text)
    ' OUTPUTS: Present entered properties on dataGVGeneral
    'Adds the Task Properties into new row in dataGVGeneral
    Dim dgvGeneralRow As Object() = New Object() {Nothing, txtTaskName.Text, txtTaskTags.Text, cmbPriority.SelectedItem.ToString(), dateDUE.Value.ToShortDateString(), txtLink.Text, txtNoteEntry.Text}
    dataGVGeneral.Rows.Add(dgvGeneralRow)
    txtTaskName.Text = ""
    txtTaskTags.Text = ""
    txtLink.Text = ""
    txtNoteEntry.Text = ""
End Sub

1 Ответов

Рейтинг:
1

Garth J Lancaster

Цитата:
как я могу просто сэкономить
ну, я думаю, это зависит от вашего определения "просто", не так ли ?

Мое определение "просто" будет заключаться в использовании datatable и методов, которые у него уже есть ...
'Setup, somewhere, maybe Init
'Create backing data-table
Dim dt As New DataTable("Src")
dt.Columns.Add("task", GetType(String))
dt.Columns.Add("tags", GetType(String))
dt.Columns.Add("priority", GetType(Integer))
' .. and so forth
'Add datatable as datagridview's data source
'Assuming datagridview's name is dgv (original, not)
dgv.DataSource = dt;
'

'As part of Save Event from button click or such
Dim file = "c:\somedirectory\someotherdirectory\tasks.xml"
dt.WriteXml(file, XmlWriteMode.WriteSchema)


'Maybe as part of Form Load event/Setup
'Assuming dt and file defined 
dt.ReadXml(file

Но ваше определение "простого" может варьироваться - раздел "настройка/инициализация", который я продемонстрировал, может быть объединен с "возможно, как часть события загрузки формы/настройки", очевидно, - мое намерение состоит скорее в том, чтобы ознакомить вас с методами, предоставляемыми классом DataTable, а не в том, чтобы "заново изобрести колесо".


Shaheer Rizwan

Спасибо я посмотрю

Shaheer Rizwan

Есть ли способ просто сохранить все введенные данные в любом файле, а затем выбрать строку через столбец checkbox и отправить эту строку в другой datagridview в другой форме и сохранить ее?

Garth J Lancaster

конечно - то, что у меня там есть, сохранит все, скажем, первый datagridview dgv в файл. Предположим, что dgv и первый столбец как флажок, если ставили вы хотите передать этой строке на второй элемент dgv2 - то, грубо говоря, построить новый объект DataTable соглашению с строки элементом datagrid2/dgv2, перебора выбранных строк в элементе управления DataGrid 1, Добавьте эти строки в 'передаче объекта DataTable, а затем установить, что объект DataTable в качестве источника для второго элемента управления datagridview dgv2, ...

DataTable dtt = new DataTable();
dtt.Columns.Add("Col1");
dtt.Columns.Add("Col2");
// ... and so on   
foreach (DataGridViewRow item in dgv.Rows)
{    
  if ((bool)item.Cells[0].Value == true)     
  {        
    bool isSelected = Convert.ToBoolean(row.Cells["Col1"].Value);        
    if (isSelected)        
    {              
      dtt.Rows.Add(row.Cells[1].Value, row.Cells[2].Value, ... );        
    }    
  }
}  
dgv2.DataSource = dtt;