Datagridview不会对列点击

时间:2017-11-29 20:35:32

标签: c# winforms entity-framework datagridview

我使用winforms的代码是:

ctxTripStops = new DatabaseContextx();
ctxTripStops.TripStops.Where(p => p.TripId == id).Load();
bsTripStops.DataSource = ctxTripStops.TripStops.Local;
dgvSecondary.DataSource = bsTripStops;

我还有一个绑定到Datagridview的bindingnavigator。 一切正常 - 在网格中添加,删除和编辑更新SaveChanges()上的数据库。什么不起作用是单击列标题来排序网格。我知道你使用ToBindingList()然后它将排序,但然后我松开添加和删除功能。是否可以添加排序功能?

1 个答案:

答案 0 :(得分:0)

如果您在本地存储数据,请使用数据集。将数据集拖放到winform,然后选择无类型。如果您已经在gridview中拥有数据,则可以通过以下方式轻松添加该数据:

DataSet DataSet1 = new dataset

dataset1.Tables.Add("Main");

foreach(DataGridViewColumn col in GridView.Columns)
{
    string name = col.Name.ToString();
    DataSet1.Tables["Main"].Columns.Add(name);
    DataSet1.AcceptChanges();
}

foreach(DataGridViewRow row in GridView.Rows)
{
    string value1 = row.Cells[0].Value.ToString();
    string value2 = row.Cells[1].Value.ToString();
    DataSet1.Tables["Main"].Rows.Add(value1,value2);
    DataSet1.AcceptChanges();

}

要保存数据集,请使用以下代码:

string path = "path to where to save";
DataSet1.WriteXml(path,XmlWriteOption.WriteScheme);

将数据集读入程序

string path = "path of saved xml";
Dataset1.ReadXml(path);

//Binds with DataGrid
DataGridView1.DataSource = DataSet1;
DataGridView1.DataMember = "Main";
DataGridView1.Update();

为了手动添加新行,如果您在属性中使用visual studio单击灯光螺栓并向下滚动到RowsAdded并双击它,则需要创建RowsAdded事件。

DataGridView1_RowsAdded_Event(object sender, EventArgs e)
{
    DataSet1.AcceptChanges();
}

您将对已删除的行执行相同操作。通过调用DataSet1.AcceptChanges()
你告诉程序保持当前的变化。