У меня есть небольшая проблема с привязкой данных между DataGridView
и PropertyGrid
.Datagridview привязки данных при создании нового объекта при создании новой строки
Вот код из объекта Я связывание и DataGridView
:
public class Effort
{
public BindingList<EffortCalculationRelation> CalculationRelations { get; set; }
public int ID { get; set; }
// more properties
public Effort()
{
CalculationRelations = new BindingList<EffortCalculationRelation>();
CalculationRelations.Clear();
for (int i=0;i<10;i++)
{
CalculationRelations.Add(new EffortCalculationRelation() { ID = i, Name = "Round:" + i.ToString(), calculation = "Some calc" });
}
}
public Effort(int id) : this()
{
this.ID = id;
// Load all other properties
}
public class EffortCalculationRelation
{
public int ID { get; set; }
public string Name { get; set; }
public string calculation { get; set; }
public int Save()
{
// save or insert and return id or 0 on fail
if (this.ID > 0)
{
return this.Update();
}
else
{
return this.Insert();
}
}
public string Delete()
{
// delete and return "" or errormsg on fail
return "";
}
private int Insert()
{
// insert and return id or 0 on fail
return ID;
}
private int Update()
{
// return affected rows or 0 on fail
return 1;
}
public string Representation
{
get { return String.Format("{0}: {1}", ID, Name); }
}
}
}
Соединение DataGridView это действительно просто единственный раз немного стиля:
public test()
{
effort = new Effort(1209);
dgv.DataSource = effort.CalculationRelations;
dgv.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
dgv.AllowUserToAddRows = true;
//this.dgv.AllowUserToDeleteRows = false;
dgv.AllowUserToResizeRows = false;
dgv.ReadOnly = true;
dgv.SelectionChanged += (sender, args) =>
{
var selectedObjects =
(from System.Windows.Forms.DataGridViewRow r in dgv.SelectedRows
where r.DataBoundItem != null && r.DataBoundItem.GetType() == typeof(EffortCalculationRelation)
select r.DataBoundItem).ToArray();
// pg is a propertygrid
this.pg.SelectedObjects = selectedObjects;
};
}
Так и моя проблема когда я выбираю новую строку в datagridview, что никакие свойства не отображаются в propertygrid.
Когда я выбираю строку, которая имеет объект в списке в момент загрузки, я могу редактировать свойства.
Не могли бы вы помочь?
Код, который вы указали, не работает как есть.Я собираюсь отредактировать его с кодом, который, как я полагаю, вы пропустили, но, пожалуйста, проверьте, что то, что я сделал, является правильным и с дальнейшим кодом дает именно то, что у вас есть. –
Извините, я вижу, и это корреспондент, это сокращенная версия моего рабочего источника. –
Должно быть, у вас есть возможность выбора? Это работает очень хорошо, если вы используете 'SelectedObject', а не' SelectedObjects'. Я смотрю, почему новая строка не работает сейчас. –