XML
<?xml version="1.0" encoding="utf-8"?>
<TrackCollection>
<Tracks>
<Id>1</Id>
<Artist>Artist 1</Artist>
<Album>His album</Album>
<Filepath>C://music//song.mp3</Filepath>
<Id>2</Id>
<Artist>Artist 1</Artist>
<Album>His album</Album>
<Filepath>C://music//song2.mp3</Filepath>
<Id>3</Id>
<Artist>Artist 1</Artist>
<Album>His album</Album>
<Filepath>C://music//song2.mp3</Filepath>
</Tracks>
</TrackCollection>
DataSet dsStore = new DataSet();
DataTable dt = new DataTable();
public void loadXmlTracks()
{
//TrackCollection tracks = null;
string path = "..//..//..//test.xml";
//XmlSerializer serializer = new XmlSerializer(typeof(TrackCollection));
//StreamReader reader = new StreamReader(path);
//tracks = (TrackCollection)serializer.Deserialize(reader);
//reader.Close();
dsStore.ReadXml(path);
dt = dsStore.Tables["Track"];
// finally bind the data to the grid
LoadGrid(dt);
}
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
int i;
int j;
i = e.RowIndex;
j = e.ColumnIndex;
string id = dataGridView1.Rows[i].Cells[0].Value.ToString();
string value = dataGridView1.Rows[i].Cells[j].Value.ToString();
DataRow[] row = dt.Select("Id=" + i, "Id");
foreach (DataRow r in row)
{
r[j] = value;
r.AcceptChanges();
}
public void LoadGrid(DataTable dt)
{
dataGridView1.DataSource = null;
dataGridView1.DataSource = dt;
}
РЕДАКТИРОВАТЬ: вот мой xml-файл, который загружается, затем я беру его и вставляю в таблицу данных, а затем использую эту таблицу для загрузки моего вида таблицы данных. Я бы хотел, чтобы пользователь изменил ячейку в сетке данных, чтобы обновить эту строку в моей таблице данных, поэтому, когда я закрываю приложение, оно сохраняется в файле XML.
Что я не уверен и не могу понять, так это как сохранить это изменение обратно в Datatable и правильно ли делать цикл, если у меня есть идентификатор строки, которую нужно изменить?
Я попробовал RowFilter, и это произвело изменение, но когда я перезагружал мое представление данных, оно отображало только строку, которую я изменил ..