День добрый! Есть форма с расположены на ней Gridом. Как правильнее организовать работу с одной формой и несколькими источниками List. Например, пользователь может работать со справочником продукции List или контрагентами List. Соответвенно при добавлении нового продукта открывается форма нового продукта. Пока организовал банально в виде
if (_currListMode == ListMode.Production) // ListMode - enum с возможными режимами редактирования
{
EditProduction();
}
else
{
EditKontragent();
}
Вопрос в том как это сделать правильнее.
ListMode - обычный enum ListMode {Production, Kontragent}
private ListMode _currListMode;
инициализируется как ListMode.Production при создании формы, переключается
private void toolStripDropDownButtonMode_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
_currListMode = e.ClickedItem == productionToolStripMenuItem ? ListMode.Production : ListMode.Kontragent;
toolStripDropDownButtonMode.Text = e.ClickedItem.Text;
RefreshData(false); // обновляем грид
}
Не совсем так, мне бы хотелось более универсально переписать методы работы с элементами (если это, конечно, возможно). Т.е. у меня сейчас редактирование происходит примерно так
private void toolStripButtonAdd_Click(object sender, EventArgs e)
{
if (_currListMode == ListMode.Production)
{
AddProduction();
}
else
{
AddKontragent);
}
}
а метод соответственно вызывает создание нового элемента продукции и показ формы продукции, с прибинденными полями класса
private void AddProduction()
{
var pac = new Production(......);
using (var frm = new FrmProductionEdit(pac.Clone()))
{
if (frm.ShowDialog(this) != DialogResult.OK) return;
pac.CopyFrom(frm.Pac);
}
pac.Save();
gridViewProduction.DataController.BeginUpdate();
_bs.Add(pac);
gridViewProduction.DataController.EndUpdate();
var rh = gridViewProduction.LocateByValue("Id", pac.Id);
if (rh != GridControl.InvalidRowHandle)
gridViewProduction.FocusedRowHandle = rh;
}
Насколько я понял ваши функции EditProduction(),EditKontragent()
возврашают лист,если так можете переписать код вот так что бы использовать возврашаемое значение
public static List<string> EditProduction()
{
yield return "Run TestFunc";
}
public static List<string> EditKontragent()
{
yield return "Run Test";
}
var result = _currListMode== ListMode.Production ? EditProduction() : EditKontragent();
var list = new BindingList<string>(result);
myGrid.DataSource = list;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Доброго времени сутокНеобходимо обновить Таблицу в Mysql, а вернее заменить одно значение в одной строке
Требуется подключить базу данных, чтобы была возможность пользоваться программой и с другого компьютераНужно проверять имя пользователя...
Необходимо было сделать список изображений, чтобы они переключались через TabPagesВ каждом TabPage добавляю объект PictureBox