2014-06-30 42 views
1

我有一个datagridview DGV1我想从XML文件中读取并将DGV1绑定到它 但是一旦在DGV1中进行了更改,我希望它将其存储在列表 之类的文件中。c#datagridview单向绑定

XML --> DGV1 --> list 

什么我现在已经试过被menioned下面

public DataTable PopulateDGV1() 
    { 
     DataSet dataSet = new DataSet(); 
     dataSet.ReadXml(GlobalParam.SettingsXMLPath); 
     return dataSet.Tables[0]; 
    } 

    private void LoadDGV1_Click(object sender, EventArgs e) 
    { 
     DGV1.DataSource = _control.PopulateDGV1(); 
     if (DGV1.Columns[0] != null) DGV1.Columns[0].ReadOnly = true;//make the most left column read only 

    } 

我想这种来回的财产以后保存

List<string> data = new List<String>(); 
    foreach (DataGridViewRow item in DGV1.Rows) 
    { 
     if (item.Cells[1].Value!=null) 
     data.Add(item.Cells[1].Value.ToString()); 

    } 

我缺少什么吗?

+0

你的代码看起来不错。你能澄清你的问题吗? –

+0

@HerrKater我希望它在没有提示用户实际保存的情况下发生,就像bindinglist(我认为)但是是单向的 – LordTitiKaka

+0

为什么你想维护2个代表同一事物的集合(DataTable和List)?我将创建一个表示行的类,并将其用作网格的数据源。如果用户编辑网格,它会自动更新数据源。 –

回答

0
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private List<Test> DataSource; 

    public void PopulateDGV1() 
    { 
     DataSource=new List<Test>() { new Test() { Age = 2, Name = "Test" } }; 
     //TODO:read your XML file 
     DGV1.DataSource = DataSource; 
    } 

    private void LoadDGV1_Click(object sender, EventArgs e) 
    { 
     PopulateDGV1(); 
    } 

} 

public class Test 
{ 
    public string Name { get; set; } 
    public int Age { get; set; } 
}