Разработка подсистемы документооборота в системе управления проектами сервисной компании
Сущность логистического бизнес-процесса. Функциональная, инфологическая и даталогическая модели предметной области. Выбор языка и средства программирования. Разработка и описание программного обеспечения для автоматизации закупок на предприятии.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 29.06.2012 |
Размер файла | 4,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
{
bool isError = false; //Отображать ли ошибку в строке
List<DataGridViewCell> listCells = new List<DataGridViewCell>();
listCells.Add(mainDGV.Rows[e.RowIndex].Cells[0]);
listCells.Add(mainDGV.Rows[e.RowIndex].Cells[1]);
listCells.Add(mainDGV.Rows[e.RowIndex].Cells[2]);
listCells.Add(mainDGV.Rows[e.RowIndex].Cells[9]);
foreach (DataGridViewCell cell in listCells)
{
if (cell.EditedFormattedValue.Equals(string.Empty) || cell.EditedFormattedValue == null)
{
cell.ErrorText = "Пустые поля недопустимы";
isError = true;
}
else
cell.ErrorText = "";
}
if (isError)
mainDGV.Rows[e.RowIndex].ErrorText = "Пустые поля недопустимы";
else
mainDGV.Rows[e.RowIndex].ErrorText = "";
}
}
private void mainTGV_CellValueChanged(object sender, System.Windows.Forms.DataGridViewCellEventArgs e)
{
if (canTrackMainTGVChanges && e.ColumnIndex > -1)
{
bool needToSetValue = true;
DataGridView table = sender as DataGridView;
object newValue = table[e.ColumnIndex, e.RowIndex].Value;
PropertyInfo pi = MappingClassType.GetProperty(dict[table.Columns[e.ColumnIndex].HeaderText]);
switch (pi.PropertyType.Name)
{
case "Statuses":
{
newValue = connector.executeUniqueResultQuery
("FROM " + pi.PropertyType.Name
+ " WHERE name='" + newValue + "'");
break;
}
case "Projects":
case "Contracts":
{
needToSetValue = false; //Мы уже обновили Tag когда изменяли ячейку с TextBoxButton
break;
}
}
if (needToSetValue) pi.SetValue(table.Rows[e.RowIndex].Tag, newValue, null);
if (table.Rows[e.RowIndex].ErrorText.Equals(string.Empty))
connector.Update(table.Rows[e.RowIndex].Tag);
}
}
#endregion
#region Члены ISessionable
public Connector Connector
{
get
{
return this.connector;
}
set
{
this.connector = value;
}
}
public ISessionable SessionableTabPage
{
get
{
return this;
}
set
{
throw new NotImplementedException();
}
}
public void updateView(bool onlyDetailTables)
{
canTrackMainTGVChanges = false;
#region Заполнение ComboBox-ов
//Заполнение комбобокса "Статус"
((DataGridViewComboBoxColumn)PreviewDocsTGV.Columns[7]).Items.Clear();
((DataGridViewComboBoxColumn)PreviewFactTGV.Columns[7]).Items.Clear();
((DataGridViewComboBoxColumn)mainDGV.Columns[9]).Items.Clear();
List<Statuses> listStatuses = connector.getAllDataFromDB("Statuses").ConvertAll(new Converter<object, Statuses>(ConverterStatuses));
for (int i = 0; i < listStatuses.Count; i++)
{
((DataGridViewComboBoxColumn)PreviewDocsTGV.Columns[7]).Items.Add(listStatuses[i].name);
((DataGridViewComboBoxColumn)PreviewFactTGV.Columns[7]).Items.Add(listStatuses[i].name);
((DataGridViewComboBoxColumn)mainDGV.Columns[9]).Items.Add(listStatuses[i].name);
}
//Заполнение комбобокса "Единица измерения"
((DataGridViewComboBoxColumn)PreviewDocsTGV.Columns[2]).Items.Clear();
((DataGridViewComboBoxColumn)PreviewFactTGV.Columns[2]).Items.Clear();
List<Units_measur> listUnits_measur = connector.getAllDataFromDB("Units_measur").ConvertAll(new Converter<object, Units_measur>(ConverterUnits_measur));
for (int i = 0; i < listUnits_measur.Count; i++)
{
((DataGridViewComboBoxColumn)PreviewDocsTGV.Columns[2]).Items.Add(listUnits_measur[i].short_name);
((DataGridViewComboBoxColumn)PreviewFactTGV.Columns[2]).Items.Add(listUnits_measur[i].short_name);
}
//Заполнение комбобокса "Валюта"
((DataGridViewComboBoxColumn)PreviewDocsTGV.Columns[4]).Items.Clear();
((DataGridViewComboBoxColumn)PreviewFactTGV.Columns[4]).Items.Clear();
List<Valuta> listValuta = connector.getAllDataFromDB("Valuta").ConvertAll(new Converter<object, Valuta>(ConverterValuta));
for (int i = 0; i < listValuta.Count; i++)
{
((DataGridViewComboBoxColumn)PreviewDocsTGV.Columns[4]).Items.Add(listValuta[i].name);
((DataGridViewComboBoxColumn)PreviewFactTGV.Columns[4]).Items.Add(listValuta[i].name);
}
#endregion
if (!onlyDetailTables)
{
#region Заполнение mainDGV
mainDGV.Rows.Clear();
List<Contract_spec> listContract_spec = connector.getAllDataFromDB("Contract_spec").ConvertAll(new Converter<object, Contract_spec>(ConverterContract_spec));
for (int i = 0; i < listContract_spec.Count; i++)
{
mainDGV.Rows.Add(listContract_spec[i].name, listContract_spec[i].proj_proj_id.name_proj, listContract_spec[i].cont_cont_id.name_cont, listContract_spec[i].create_date,
listContract_spec[i].author, listContract_spec[i].client, listContract_spec[i].contractor, listContract_spec[i].summa,
listContract_spec[i].comment, listContract_spec[i].stat_stat_id.name);
mainDGV.Rows[i].Tag = listContract_spec[i];
}
if (mainDGV.Rows.Count > 0 && RowForDetail==-1) RowForDetail = 0;
#endregion
}
if (RowForDetail!= -1 && mainDGV.Rows[RowForDetail].Tag!=null)
{
#region Заполнение PreviewDocsTGV
PreviewDocsTGV.Nodes.Clear();
List<Pos_group> listPos_group = connector.getAllDataFromDB("Pos_group AS pg WHERE pg.pt_pt_id=1 AND pg.cs_cs_id = " + (mainDGV.Rows[RowForDetail].Tag as Contract_spec).cs_id).ConvertAll(new Converter<object, Pos_group>(ConverterPos_group));
for (int j = 0; j < listPos_group.Count; j++)
{
TreeGridNode node = PreviewDocsTGV.Nodes.Add(listPos_group[j].name);
node.Tag = listPos_group[j];
NodeCellsToTextBoxCells(node);
List<Positions> listPositionsFact = connector.getAllDataFromDB("Positions AS pos WHERE pos.del IS NULL AND pos.post_post_id=1 AND pos.pos_pos_id IS NULL AND pos.pg_pg_id = " + listPos_group[j].pg_id + " AND pos.cs_cs_id = " +((Contract_spec)mainDGV.Rows[RowForDetail].Tag).cs_id + " ORDER BY pos.order_number asc").ConvertAll(new Converter<object, Positions>(ConverterPositions));
for (int i = 0; i < listPositionsFact.Count; i++)
{
TreeGridNode nodeChild = node.Nodes.Add(listPositionsFact[i].article, listPositionsFact[i].name, listPositionsFact[i].um_um_id.short_name, listPositionsFact[i].count,
listPositionsFact[i].val_val_id.name, listPositionsFact[i].price, listPositionsFact[i].summa, listPositionsFact[i].stat_stat_id.name, listPositionsFact[i].delivery,
listPositionsFact[i].cancel, listPositionsFact[i].official);
nodeChild.Tag = listPositionsFact[i];
recursionAddingNodes(nodeChild, listPositionsFact[i].pos_id, listPositionsFact[i].post_post_id, listPositionsFact[i].pg_pg_id);
}
}
#endregion
#region Заполнение PreviewFactTGV
PreviewFactTGV.Nodes.Clear();
List<Pos_group> listPos_group2 = connector.getAllDataFromDB("Pos_group AS pg WHERE pg.pt_pt_id=2 AND pg.cs_cs_id = " + (mainDGV.Rows[RowForDetail].Tag as Contract_spec).cs_id).ConvertAll(new Converter<object, Pos_group>(ConverterPos_group));
for (int j = 0; j < listPos_group2.Count; j++)
{
TreeGridNode node = PreviewFactTGV.Nodes.Add(listPos_group2[j].name);
node.Tag = listPos_group2[j];
NodeCellsToTextBoxCells(node);
List<Positions> listPositionsDocs = connector.getAllDataFromDB("Positions AS pos WHERE pos.del IS NULL AND pos.post_post_id=2 AND pos.pos_pos_id IS NULL AND pos.pg_pg_id = " + listPos_group2[j].pg_id + "AND pos.cs_cs_id = " + ((Contract_spec)mainDGV.Rows[RowForDetail].Tag).cs_id + " ORDER BY pos.order_number asc").ConvertAll(new Converter<object, Positions>(ConverterPositions));
for (int i = 0; i < listPositionsDocs.Count; i++)
{
TreeGridNode nodeChild = node.Nodes.Add(listPositionsDocs[i].article, listPositionsDocs[i].name, listPositionsDocs[i].um_um_id.short_name, listPositionsDocs[i].count,
listPositionsDocs[i].val_val_id.name, listPositionsDocs[i].price, listPositionsDocs[i].summa, listPositionsDocs[i].stat_stat_id.name, listPositionsDocs[i].delivery,
listPositionsDocs[i].cancel, listPositionsDocs[i].official);
nodeChild.Tag = listPositionsDocs[i];
recursionAddingNodes(nodeChild, listPositionsDocs[i].pos_id, listPositionsDocs[i].post_post_id, listPositionsDocs[i].pg_pg_id);
}
}
#endregion
}
canTrackMainTGVChanges = true;
}
private void NodeCellsToTextBoxCells(TreeGridNode treeGridNode)
{
for (int i = 1; i < treeGridNode.Cells.Count; i++)//Заполнение пустыми ячейками строки группы
{
treeGridNode.Cells[i] = new DataGridViewTextBoxCell();
treeGridNode.Cells[i].Value = "";
treeGridNode.Cells[i].ReadOnly = true;
}
}
//Рекурсивно добавляем потомков в дерево
private void recursionAddingNodes(TreeGridNode node, int id, Pos_type pos_type, Pos_group pos_group)
{
List<Positions> listPositionsChildren = connector.getAllDataFromDB("Positions AS pos WHERE pos.del IS NULL AND pos.post_post_id=" + pos_type.pos_type_id + " AND pos.pg_pg_id = " + pos_group.pg_id + " AND pos.pos_pos_id = " + id + " ORDER BY pos.order_number asc").ConvertAll(new Converter<object, Positions>(ConverterPositions));
for (int j = 0; j < listPositionsChildren.Count; j++)
{
TreeGridNode nodeChild = node.Nodes.Add(listPositionsChildren[j].article, listPositionsChildren[j].name, listPositionsChildren[j].um_um_id.short_name, listPositionsChildren[j].count,
listPositionsChildren[j].val_val_id.name, listPositionsChildren[j].price, listPositionsChildren[j].summa, listPositionsChildren[j].stat_stat_id.name, listPositionsChildren[j].delivery,
listPositionsChildren[j].cancel, listPositionsChildren[j].official);
nodeChild.Tag = listPositionsChildren[j];
Positions newPos = new Positions();
newPos.name = ((Positions)nodeChild.Tag).name;
newPos.article = ((Positions)nodeChild.Tag).article;
newPos.cancel = ((Positions)nodeChild.Tag).cancel;
newPos.count = ((Positions)nodeChild.Tag).count;
newPos.delivery = ((Positions)nodeChild.Tag).delivery;
newPos.official = ((Positions)nodeChild.Tag).official;
newPos.delivery = ((Positions)nodeChild.Tag).delivery;
newPos.price = ((Positions)nodeChild.Tag).price;
newPos.summa = ((Positions)nodeChild.Tag).summa;
newPos.stat_stat_id = ((Positions)nodeChild.Tag).stat_stat_id;
newPos.prop_prop_id = ((Positions)nodeChild.Tag).prop_prop_id;
newPos.um_um_id = ((Positions)nodeChild.Tag).um_um_id;
newPos.val_val_id = ((Positions)nodeChild.Tag).val_val_id;
newPos.pg_pg_id = ((Positions)nodeChild.Parent.Tag).pg_pg_id;
newPos.post_post_id = ((Positions)nodeChild.Parent.Tag).post_post_id;
newPos.pos_pos_id = ((Positions)nodeChild.Parent.Tag);
newPos.cs_cs_id = ((Positions)nodeChild.Parent.Tag).cs_cs_id;
recursionAddingNodes(nodeChild, listPositionsChildren[j].pos_id, listPositionsChildren[j].post_post_id, listPositionsChildren[j].pg_pg_id);
}
}
#endregion
private void mainDGV_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
var newTab = new DogovornieSpecifikaciiForm(mainDGV.Rows[e.RowIndex].Tag as Contract_spec);
(Parent as ExtendedTabControl).TabPages.Add(newTab);
(Parent as ExtendedTabControl).SelectedTab = newTab;
}
}
}
DogovornieSpecifikaciiForm.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ControlsLibrary.Others;
using ControlsLibrary.NHibernate.MappingClasses;
using ControlsLibrary.Controls.TreeGridView;
using ControlsLibrary.Interfaces;
namespace Forms.FormModels
{
public partial class DogovornieSpecifikaciiForm : TabPage, ISessionable
{
public Connector connector = new Connector();
public static string desc = "Форма Ведение договорных спецификаций представляет собой...";
private bool flagCellMouseUpped = false;
Contract_spec ParentContractSpec = null;
private Point start;
private Point DraggablePanelOldLocation;
private Size DraggablePanelOldSize;
private bool dragPanelClosed = false;
#region Constructor
public DogovornieSpecifikaciiForm()
{
InitializeComponent();
//Прикрепление событий
docsTgv.CellMouseDown += new System.Windows.Forms.DataGridViewCellMouseEventHandler(docsTgv_CellMouseDown);
docsTgv.CellMouseUp += new System.Windows.Forms.DataGridViewCellMouseEventHandler(docsTgv_CellMouseUp);
factTgv.AllowDrop = true;
factTgv.DragEnter += factTgv_DragEnter;
factTgv.DragDrop += factTgv_DragDrop;
draggablePanel1.Move += draggablePanel1_Move;
draggablePanel1.MouseUp += draggablePanel1_MouseUp;
docsTgv.DragEnter += docsTgv_DragEnter;
docsTgv.DragDrop += docsTgv_DragDrop;
updateView(false);
//ToolTips
ToolTip t = new ToolTip();
t.SetToolTip(excelImportButton, "Импортировать в Excel");
t.SetToolTip(excelExportButton, "Экспортировать в Excel");
t.SetToolTip(DelRecordButton, "Удалить ДС");
t.SetToolTip(addRecordButton, "Добавить ДС");
t.SetToolTip(closeDraggablePanelButton, "Свернуть");
}
public DogovornieSpecifikaciiForm(Contract_spec ParentContractSpec)
{
this.ParentContractSpec = ParentContractSpec;
InitializeComponent();
//Прикрепление событий
docsTgv.CellMouseDown += new System.Windows.Forms.DataGridViewCellMouseEventHandler(docsTgv_CellMouseDown);
docsTgv.CellMouseUp += new System.Windows.Forms.DataGridViewCellMouseEventHandler(docsTgv_CellMouseUp);
factTgv.AllowDrop = true;
factTgv.DragEnter += factTgv_DragEnter;
factTgv.DragDrop += factTgv_DragDrop;
draggablePanel1.Move += draggablePanel1_Move;
draggablePanel1.MouseUp += draggablePanel1_MouseUp;
docsTgv.DragEnter += docsTgv_DragEnter;
docsTgv.DragDrop += docsTgv_DragDrop;
DC_NameTextBox.Text = ParentContractSpec.name;
DC_ProjectTextBox.Text = ParentContractSpec.proj_proj_id.name_proj;
DC_ContractTextBox.Text = ParentContractSpec.cont_cont_id.name_cont;
dateTimePicker1.Value = ParentContractSpec.create_date?? new DateTime(1753,1,1);
updateView(false);
}
#endregion
#region Разные доп функции
//Превратить все ячейки группы в тип TextBoxCell
private void NodeCellsToTextBoxCells(TreeGridNode treeGridNode)
{
for (int i = 1; i < treeGridNode.Cells.Count; i++)//Заполнение пустыми ячейками строки группы
{
treeGridNode.Cells[i] = new DataGridViewTextBoxCell();
treeGridNode.Cells[i].Value = "";
treeGridNode.Cells[i].ReadOnly = true;
}
}
void ByFactByDocsButton_Click(object sender, System.EventArgs e)
{
if ((ByFactButton.Pressed && ByDocsButton.Pressed) || (!ByFactButton.Pressed &&!ByDocsButton.Pressed))
splitContainer2.SplitterDistance = splitContainer2.Width / 2;
else
if (ByFactButton.Pressed &&!ByDocsButton.Pressed)
splitContainer2.SplitterDistance = 5;
else if (!ByFactButton.Pressed && ByDocsButton.Pressed)
splitContainer2.SplitterDistance = splitContainer2.Width - 5;
dragPanelChoisePartMove();
}
#endregion
#region Рекурсивные функции
//Рекурсивно добавляем потомков в дерево
private void recursionAddingNodes(TreeGridNode node, int id,Pos_type pos_type,Pos_group pos_group)
{
List<Positions> listPositionsChildren = connector.getAllDataFromDB("Positions AS pos WHERE pos.del IS NULL AND pos.post_post_id=" + pos_type.pos_type_id + " AND pos.pg_pg_id = " + pos_group.pg_id + " AND pos.pos_pos_id = " + id + " ORDER BY pos.order_number asc").ConvertAll(new Converter<object, Positions>(ConverterPositions));
for (int j = 0; j < listPositionsChildren.Count; j++)
{
TreeGridNode nodeChild = node.Nodes.Add(listPositionsChildren[j].article, listPositionsChildren[j].name, listPositionsChildren[j].um_um_id.short_name, listPositionsChildren[j].count,
listPositionsChildren[j].val_val_id.name, listPositionsChildren[j].price, listPositionsChildren[j].summa, listPositionsChildren[j].stat_stat_id.name, listPositionsChildren[j].delivery,
listPositionsChildren[j].cancel, listPositionsChildren[j].official);
nodeChild.Tag = listPositionsChildren[j];
Positions newPos = new Positions();
newPos.name = ((Positions)nodeChild.Tag).name;
newPos.article = ((Positions)nodeChild.Tag).article;
newPos.cancel = ((Positions)nodeChild.Tag).cancel;
newPos.count = ((Positions)nodeChild.Tag).count;
newPos.delivery = ((Positions)nodeChild.Tag).delivery;
newPos.official = ((Positions)nodeChild.Tag).official;
newPos.delivery = ((Positions)nodeChild.Tag).delivery;
newPos.price = ((Positions)nodeChild.Tag).price;
newPos.summa = ((Positions)nodeChild.Tag).summa;
newPos.stat_stat_id = ((Positions)nodeChild.Tag).stat_stat_id;
newPos.prop_prop_id = ((Positions)nodeChild.Tag).prop_prop_id;
newPos.um_um_id = ((Positions)nodeChild.Tag).um_um_id;
newPos.val_val_id = ((Positions)nodeChild.Tag).val_val_id;
newPos.pg_pg_id = ((Positions)nodeChild.Parent.Tag).pg_pg_id;
newPos.post_post_id = ((Positions)nodeChild.Parent.Tag).post_post_id;
newPos.pos_pos_id = ((Positions)nodeChild.Parent.Tag);
newPos.cs_cs_id = ((Positions)nodeChild.Parent.Tag).cs_cs_id;
recursionAddingNodes(nodeChild, listPositionsChildren[j].pos_id,listPositionsChildren[j].post_post_id,listPositionsChildren[j].pg_pg_id);
}
}
//Рекурсивно меняем у родителя данные всех детей, делаем детей относящимися ко второй (правой таблице)
private void recursionChangeParent(TreeGridNode node)
{
foreach (TreeGridNode childNode in node.Nodes)
{
Positions newPos = new Positions();
newPos.name = ((Positions)childNode.Tag).name;
newPos.article = ((Positions)childNode.Tag).article;
newPos.cancel = ((Positions)childNode.Tag).cancel;
newPos.count = ((Positions)childNode.Tag).count;
newPos.delivery = ((Positions)childNode.Tag).delivery;
newPos.official = ((Positions)childNode.Tag).official;
newPos.delivery = ((Positions)childNode.Tag).delivery;
newPos.price = ((Positions)childNode.Tag).price;
newPos.summa = ((Positions)childNode.Tag).summa;
newPos.stat_stat_id = ((Positions)childNode.Tag).stat_stat_id;
newPos.prop_prop_id = ((Positions)childNode.Tag).prop_prop_id;
newPos.um_um_id = ((Positions)childNode.Tag).um_um_id;
newPos.val_val_id = ((Positions)childNode.Tag).val_val_id;
newPos.pg_pg_id = ((Positions)childNode.Parent.Tag).pg_pg_id;
newPos.post_post_id = ((Positions)childNode.Parent.Tag).post_post_id;
newPos.pos_pos_id = ((Positions)childNode.Parent.Tag);
newPos.cs_cs_id = ((Positions)childNode.Parent.Tag).cs_cs_id;
childNode.Tag = newPos;
connector.Update(newPos);
recursionChangeParent(childNode);
}
}
private void recursionChangeNodeParent(TreeGridNode node)
{
foreach (TreeGridNode childNode in node.Nodes)
{
Positions newPos = new Positions();
newPos.name = ((Positions)childNode.Tag).name;
newPos.article = ((Positions)childNode.Tag).article;
newPos.cancel = ((Positions)childNode.Tag).cancel;
newPos.count = ((Positions)childNode.Tag).count;
newPos.delivery = ((Positions)childNode.Tag).delivery;
newPos.official = ((Positions)childNode.Tag).official;
newPos.delivery = ((Positions)childNode.Tag).delivery;
newPos.price = ((Positions)childNode.Tag).price;
newPos.summa = ((Positions)childNode.Tag).summa;
newPos.stat_stat_id = ((Positions)childNode.Tag).stat_stat_id;
newPos.prop_prop_id = ((Positions)childNode.Tag).prop_prop_id;
newPos.um_um_id = ((Positions)childNode.Tag).um_um_id;
newPos.val_val_id = ((Positions)childNode.Tag).val_val_id;
newPos.cs_cs_id = ((Positions)childNode.Tag).cs_cs_id;
newPos.pg_pg_id = ((Pos_group)childNode.Parent.Tag);
newPos.post_post_id = ((Pos_group)childNode.Parent.Tag).pt_pt_id;
newPos.pos_pos_id = null;
childNode.Tag = newPos;
connector.Update(newPos);
recursionChangeParent(childNode);
}
}
#endregion
#region Converters
private Contract_spec ConverterContract_spec(object obj)
{
return (Contract_spec)obj;
}
private Positions ConverterPositions(object obj)
{
return (Positions)obj;
}
private Statuses ConverterStatuses(object obj)
{
return (Statuses)obj;
}
private Units_measur ConverterUnits_measur(object obj)
{
return (Units_measur)obj;
}
private Valuta ConverterValuta(object obj)
{
return (Valuta)obj;
}
private Pos_group ConverterPos_group(object obj)
{
return (Pos_group)obj;
}
#endregion
#region draggablePanel1
private void draggablePanel1_Move(object sender, EventArgs e)
{
dragPanelChoisePartMove();
}
private void draggablePanel1_MouseUp(object sender, MouseEventArgs e)
{
dragPanelChoisePartMouseUp();
}
void dragPanelChoisePartMouseUp()
{
//Мониторим панель, что она лежит между 2мя датагридами
if (draggablePanel1.Location.X < splitContainer2.SplitterDistance && draggablePanel1.Location.X + draggablePanel1.Width > splitContainer2.SplitterDistance)
{
if (draggablePanel1.Location.X + draggablePanel1.Width / 2 < splitContainer2.SplitterDistance)//Больше к левой
{
draggablePanel1.Location = new Point(splitContainer2.SplitterDistance - draggablePanel1.Width, draggablePanel1.Location.Y);
blockPanel9.HeaderText = "По документам";
}
else//Больше к правой
{
draggablePanel1.Location = new Point(splitContainer2.SplitterDistance, draggablePanel1.Location.Y);
blockPanel9.HeaderText = "Фактически";
}
}
//Если выходит за левую границу
if (draggablePanel1.Location.X < 0)
draggablePanel1.Location = new Point(0, draggablePanel1.Location.Y);
////Если выходит за правую границу
if (draggablePanel1.Location.X + draggablePanel1.Width > splitContainer2.Width)
draggablePanel1.Location = new Point(splitContainer2.Width - draggablePanel1.Width, draggablePanel1.Location.Y);
//Если выходит за верхнюю границу
if (draggablePanel1.Location.Y < 0)
draggablePanel1.Location = new Point(draggablePanel1.Location.X, 0);
////Если выходит за нижнюю границу
if (draggablePanel1.Location.Y + draggablePanel1.Height > splitContainer2.Height)
draggablePanel1.Location = new Point(draggablePanel1.Location.X, splitContainer2.Height - draggablePanel1.Height);
}
void dragPanelChoisePartMove()
{
if (draggablePanel1.Location.X + draggablePanel1.Width < splitContainer2.SplitterDistance)
blockPanel9.HeaderText = "По документам";
else if (draggablePanel1.Location.X > splitContainer2.SplitterDistance)
{
blockPanel9.HeaderText = "Фактически";
}
}
void blockPanel9_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
BringToFront();
start = e.Location;
(sender as Control).MouseUp += new MouseEventHandler(MouseUpEv);
(sender as Control).MouseMove += new MouseEventHandler(MouseMoveEv);
}
}
void MouseUpEv(object sender, MouseEventArgs e)
{
(sender as Control).MouseMove -= new MouseEventHandler(MouseMoveEv);
(sender as Control).MouseUp -= new MouseEventHandler(MouseUpEv);
dragPanelChoisePartMouseUp();
}
void MouseMoveEv(object sender, MouseEventArgs e)
{
draggablePanel1.Location = new Point(draggablePanel1.Location.X - (start.X - e.X), draggablePanel1.Location.Y - (start.Y - e.Y));
}
void closeDraggablePanelButton_Click(object sender, System.EventArgs e)
{
if (dragPanelClosed)
{
draggablePanel1.Location = DraggablePanelOldLocation;
draggablePanel1.Size = DraggablePanelOldSize;
dragPanelClosed = false;
}
else
{
DraggablePanelOldLocation = draggablePanel1.Location;
draggablePanel1.Location = new Point(splitContainer2.Location.X + 10, splitContainer2.Height - 10);
DraggablePanelOldSize = draggablePanel1.Size;
draggablePanel1.Size = blockPanel9.HeaderPanel.Size;
dragPanelClosed = true;
}
dragPanelChoisePartMouseUp();
}
#endregion
#region Drag and Drop из docsTGV в factsTGV
//Источник docsTgv
private void docsTgv_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.RowIndex > -1 && e.ColumnIndex > -1)
{
flagCellMouseUpped = false;
Timer timer = new Timer();
timer.Interval = 50;
timer.Tag = e.RowIndex;
timer.Tick += DragTimerTick;
timer.Start();
}
}
private void docsTgv_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.RowIndex > -1 && e.ColumnIndex > -1)
{
flagCellMouseUpped = true;
}
}
private void DragTimerTick(object sender, EventArgs e)
{
((Timer)sender).Stop();
if (!flagCellMouseUpped)
{
//Тащим несколько разных выделенных объектов И группы и Позиции
Type typeofFirstAddedItem = docsTgv.SelectedRows[0].Tag.GetType(); //Либо тип группа - либо тип позиция
List<Pos_group> listGroups = new List<Pos_group>();
List<Positions> listPositions = new List<Positions>();
bool flagNeedToDrag =true;
for (int i = 0; i < docsTgv.SelectedRows.Count; i++)
{
if (docsTgv.SelectedRows[i].Tag.GetType() == typeofFirstAddedItem)
{
if (typeofFirstAddedItem == typeof(Pos_group))
listGroups.Add((Pos_group)docsTgv.SelectedRows[i].Tag);
else
listPositions.Add((Positions)docsTgv.SelectedRows[i].Tag);
}
else
{
flagNeedToDrag = false;
MessageBox.Show("Невозможно перетащить группы и позиции одновременно");
return;
}
}
if (flagNeedToDrag)
{
if(listGroups.Count>0)
docsTgv.DoDragDrop(listGroups, DragDropEffects.Copy);
else
if (listPositions.Count > 0)
docsTgv.DoDragDrop(listPositions, DragDropEffects.All);
}
}
}
//Приемник factTgv
private void factTgv_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Copy;
}
private void factTgv_DragDrop(object sender, DragEventArgs e)
{
Point clientPoint = factTgv.PointToClient(new Point(e.X, e.Y));
int rowIndexOfItemUnderMouseToDrop = factTgv.HitTest(clientPoint.X, clientPoint.Y).RowIndex;
#region Если в пустое место
if (rowIndexOfItemUnderMouseToDrop == -1)//Если в пустое место
{
List<Pos_group> listGroups = e.Data.GetData(typeof(List<Pos_group>)) as List<Pos_group>;
if (listGroups == null)//Драгаем позицию
MessageBox.Show("Невозможно перетатащить позиции в корень групп");
else//Драгаем группу
{
for (int j = 0; j < listGroups.Count; j++)
{
TreeGridNode group = factTgv.Nodes.Add(listGroups[j].name);
NodeCellsToTextBoxCells(group);
group.Tag = listGroups[j];
List<Positions> listPositionsFact = connector.getAllDataFromDB("Positions AS pos WHERE pos.del IS NULL AND pos.post_post_id=1 AND pos.pos_pos_id IS NULL AND pos.pg_pg_id = " + listGroups[j].pg_id).ConvertAll(new Converter<object, Positions>(ConverterPositions));
for (int i = 0; i < listPositionsFact.Count; i++)
{
TreeGridNode nodeChild = group.Nodes.Add(listPositionsFact[i].article, listPositionsFact[i].name, listPositionsFact[i].um_um_id.short_name, listPositionsFact[i].count,
listPositionsFact[i].val_val_id.name, listPositionsFact[i].price, listPositionsFact[i].summa, listPositionsFact[i].stat_stat_id.name, listPositionsFact[i].delivery,
listPositionsFact[i].cancel, listPositionsFact[i].official);
nodeChild.Tag = listPositionsFact[i];
recursionAddingNodes(nodeChild, listPositionsFact[i].pos_id, listPositionsFact[i].post_post_id, listPositionsFact[i].pg_pg_id);
}
Pos_group newGroup = new Pos_group();
newGroup.name = ((Pos_group)group.Tag).name;
newGroup.descript = ((Pos_group)group.Tag).descript;
newGroup.cs_cs_id = ((Pos_group)group.Tag).cs_cs_id;
newGroup.pt_pt_id = (Pos_type)connector.executeUniqueResultQuery("from Pos_type AS pt WHERE pt.pos_type_id =2");
group.Tag = newGroup;
connector.Update(newGroup);
recursionChangeNodeParent(group);
}
connector.CommitChanges();
}
}
#endregion
#region Если в группу
else if (factTgv.Rows[rowIndexOfItemUnderMouseToDrop].Tag.GetType() == typeof(Pos_group))//Если в группу
{
List<Positions> listPositions = e.Data.GetData(typeof(List<Positions>)) as List<Positions>;
if (listPositions == null)//Драгаем группу
MessageBox.Show("Невозможно перетащить группы в группу");
else//Драгаем позицию
{
TreeGridNode parent = factTgv.GetNodeForRow(rowIndexOfItemUnderMouseToDrop);//Получили нод, на который мы перетащили
for (int i = 0; i < listPositions.Count; i++)
{
TreeGridNode newChild = parent.Nodes.Add(listPositions[i].article, listPositions[i].name, listPositions[i].um_um_id.short_name, listPositions[i].count,
listPositions[i].val_val_id.name, listPositions[i].price, listPositions[i].summa, listPositions[i].stat_stat_id.name, listPositions[i].delivery,
listPositions[i].cancel, listPositions[i].official);
newChild.Tag = listPositions[i];
recursionAddingNodes(newChild, listPositions[i].pos_id, listPositions[i].post_post_id, listPositions[i].pg_pg_id);
Positions newPos = new Positions();
newPos.name = ((Positions)newChild.Tag).name;
newPos.article = ((Positions)newChild.Tag).article;
newPos.cancel = ((Positions)newChild.Tag).cancel;
newPos.count = ((Positions)newChild.Tag).count;
newPos.delivery = ((Positions)newChild.Tag).delivery;
newPos.official = ((Positions)newChild.Tag).official;
newPos.delivery = ((Positions)newChild.Tag).delivery;
newPos.price = ((Positions)newChild.Tag).price;
newPos.summa = ((Positions)newChild.Tag).summa;
newPos.stat_stat_id = ((Positions)newChild.Tag).stat_stat_id;
newPos.prop_prop_id = ((Positions)newChild.Tag).prop_prop_id;
newPos.um_um_id = ((Positions)newChild.Tag).um_um_id;
newPos.val_val_id = ((Positions)newChild.Tag).val_val_id;
newPos.cs_cs_id = ((Positions)newChild.Tag).cs_cs_id;
newPos.pg_pg_id = ((Pos_group)newChild.Parent.Tag);
newPos.post_post_id = ((Pos_group)newChild.Parent.Tag).pt_pt_id;
newPos.pos_pos_id = null;
newChild.Tag = newPos;
connector.Update(newPos);
recursionChangeParent(newChild);
}
connector.CommitChanges();
}
}
#endregion
#region Если в позицию
else if (factTgv.Rows[rowIndexOfItemUnderMouseToDrop].Tag.GetType() == typeof(Positions))//Если в позицию
{
List<Positions> listPositions = e.Data.GetData(typeof(List<Positions>)) as List<Positions>;
if (listPositions == null)//Драгаем группу
MessageBox.Show("Невозможно перетащить группы в позицию");
else//Драгаем позицию
{
TreeGridNode parent = factTgv.GetNodeForRow(rowIndexOfItemUnderMouseToDrop);//Получили нод, на который мы перетащили
for (int i = 0; i < listPositions.Count; i++)
{
TreeGridNode newChild = parent.Nodes.Add(listPositions[i].article, listPositions[i].name, listPositions[i].um_um_id.short_name, listPositions[i].count,
listPositions[i].val_val_id.name, listPositions[i].price, listPositions[i].summa, listPositions[i].stat_stat_id.name, listPositions[i].delivery,
listPositions[i].cancel, listPositions[i].official);
newChild.Tag = listPositions[i];
recursionAddingNodes(newChild, listPositions[i].pos_id, listPositions[i].post_post_id, listPositions[i].pg_pg_id);
Positions newPos = new Positions();
newPos.name = ((Positions)newChild.Tag).name;
newPos.article = ((Positions)newChild.Tag).article;
newPos.cancel = ((Positions)newChild.Tag).cancel;
newPos.count = ((Positions)newChild.Tag).count;
newPos.delivery = ((Positions)newChild.Tag).delivery;
newPos.official = ((Positions)newChild.Tag).official;
newPos.delivery = ((Positions)newChild.Tag).delivery;
newPos.price = ((Positions)newChild.Tag).price;
newPos.summa = ((Positions)newChild.Tag).summa;
newPos.stat_stat_id = ((Positions)newChild.Tag).stat_stat_id;
newPos.prop_prop_id = ((Positions)newChild.Tag).prop_prop_id;
newPos.um_um_id = ((Positions)newChild.Tag).um_um_id;
newPos.val_val_id = ((Positions)newChild.Tag).val_val_id;
newPos.pg_pg_id = ((Positions)newChild.Parent.Tag).pg_pg_id;
newPos.post_post_id = ((Positions)newChild.Parent.Tag).post_post_id;
newPos.pos_pos_id = ((Positions)newChild.Parent.Tag);
newPos.cs_cs_id = ((Positions)newChild.Parent.Tag).cs_cs_id;
newChild.Tag = newPos;
connector.Update(newPos);
recursionChangeParent(newChild);
}
connector.CommitChanges();
}
}
#endregion
}
#endregion
#region Drag and Drop внутри docsTGV
//Приемник docsTgv
private void docsTgv_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void docsTgv_DragDrop(object sender, DragEventArgs e)
{
Point clientPoint = docsTgv.PointToClient(new Point(e.X, e.Y));
int rowIndexOfItemUnderMouseToDrop = docsTgv.HitTest(clientPoint.X, clientPoint.Y).RowIndex;
if (docsTgv.Rows[rowIndexOfItemUnderMouseToDrop].Tag.GetType() == typeof(Positions))//Если на позицию
{
List<Positions> listPositions = e.Data.GetData(typeof(List<Positions>)) as List<Positions>;
if (listPositions == null)//Драгаем группу
MessageBox.Show("Невозможно перетащить группы в позицию");
else//Драгаем позицию
{
Positions targetPosition = (Positions)docsTgv.Rows[rowIndexOfItemUnderMouseToDrop].Tag;
for (int i = 0; i < listPositions.Count; i++)//Проверка: Невозможно переместить позиции на самих себя
if (listPositions[i] == targetPosition)
return;
bool flagOneGroupOneLevel = false;
for (int i = 0; i < listPositions.Count; i++)//Проверка: принадлежат одной группе и находятся на одном уровне
{
if (listPositions[i].pg_pg_id == targetPosition.pg_pg_id && listPositions[i].pos_pos_id == targetPosition.pos_pos_id)
flagOneGroupOneLevel = true;
else
{
flagOneGroupOneLevel = false;
MessageBox.Show("Перемещение позиций возможно только в рамках группы и на одном уровне");
return;
}
}
if (flagOneGroupOneLevel)//Если принадлежат
{
flagOneGroupOneLevel = false;
int orderNumberToChange = targetPosition.order_number;
//for ()
if (targetPosition.order_number < getMinOrderNumberFromList(listPositions))//Меняем местами - Цель вверху, Элементы, которые тянем внизу.
{
for (int i = 0; i < listPositions.Count; i++)
{
listPositions[i].order_number = orderNumberToChange + i;
connector.Update(listPositions[i]);
if (i == listPositions.Count - 1)
targetPosition.order_number = orderNumberToChange + i + 1;
}
connector.Update(targetPosition);
connector.CommitChanges();
TreeGridNode ParentNode = docsTgv.GetNodeForRow(rowIndexOfItemUnderMouseToDrop).Parent;
ParentNode.Nodes.Clear();
if (ParentNode.Tag.GetType() == typeof(Pos_group))//Если родитель - группа
recursionAddChildrenToGroup(ParentNode);
}
else if (targetPosition.order_number > getMaxOrderNumberFromList(listPositions))//Меняем местами - Элементы, которые тянем вверху, Цель внизу.
{
targetPosition.order_number = getMinOrderNumberFromList(listPositions);
for (int i = 0; i < listPositions.Count; i++)
{
listPositions[i].order_number = orderNumberToChange + i;
connector.Update(listPositions[i]);
}
connector.Update(targetPosition);
connector.CommitChanges();
TreeGridNode ParentNode = docsTgv.GetNodeForRow(rowIndexOfItemUnderMouseToDrop).Parent;
ParentNode.Nodes.Clear();
if (ParentNode.Tag.GetType() == typeof(Pos_group))//Если родитель - группа
recursionAddChildrenToGroup(ParentNode);
}
}
else
MessageBox.Show("Перемещение позиций возможно только в рамках группы");
}
}
}
int getMinOrderNumberFromList(List<Positions> list)
{
int min = 9999;
for (int i = 0; i < list.Count; i++)
if (list[i].order_number < min)
min = list[i].order_number;
return min;
}
int getMaxOrderNumberFromList(List<Positions> list)
{
int max = -9999;
for (int i = 0; i < list.Count; i++)
if (list[i].order_number > max)
max = list[i].order_number;
return max;
}
void recursionAddChildrenToGroup(TreeGridNode parentGroupNode)
{
Pos_group parentGroup = parentGroupNode.Tag as Pos_group;
List<Positions> listPositionsFact = connector.getAllDataFromDB("Positions AS pos WHERE pos.del IS NULL AND pos.post_post_id=" + parentGroup.pt_pt_id.pos_type_id + " AND pos.pos_pos_id IS NULL AND pos.pg_pg_id = " + parentGroup.pg_id +" ORDER BY order_number").ConvertAll(new Converter<object, Positions>(ConverterPositions));
for (int i = 0; i < listPositionsFact.Count; i++)
{
TreeGridNode nodeChild = parentGroupNode.Nodes.Add(listPositionsFact[i].article, listPositionsFact[i].name, listPositionsFact[i].um_um_id.short_name, listPositionsFact[i].count,
listPositionsFact[i].val_val_id.name, listPositionsFact[i].price, listPositionsFact[i].summa, listPositionsFact[i].stat_stat_id.name, listPositionsFact[i].delivery,
listPositionsFact[i].cancel, listPositionsFact[i].official);
nodeChild.Tag = listPositionsFact[i];
recursionAddingNodes(nodeChild, listPositionsFact[i].pos_id, listPositionsFact[i].post_post_id, listPositionsFact[i].pg_pg_id);
}
}
#endregion
#region Члены ISessionable
public Connector Connector
{
get
{
return connector;
}
set
{
this.connector = value;
}
}
public ISessionable SessionableTabPage
{
get
{
return this;
}
set
{
throw new NotImplementedException();
}
}
public void updateView(bool onlyDetailTables)
{
#region Инициализация компонентов (docsTGV, factsDGV)
#region Заполнение ComboBox-ов
//Заполнение комбобокса "Статус"
((DataGridViewComboBoxColumn)docsTgv.Columns[7]).Items.Clear();
((DataGridViewComboBoxColumn)factTgv.Columns[7]).Items.Clear();
List<Statuses> listStatuses = connector.getAllDataFromDB("Statuses").ConvertAll(new Converter<object, Statuses>(ConverterStatuses));
for (int i = 0; i < listStatuses.Count; i++)
{
((DataGridViewComboBoxColumn)docsTgv.Columns[7]).Items.Add(listStatuses[i].name);
((DataGridViewComboBoxColumn)factTgv.Columns[7]).Items.Add(listStatuses[i].name);
}
//Заполнение комбобокса "Единица измерения"
((DataGridViewComboBoxColumn)docsTgv.Columns[2]).Items.Clear();
((DataGridViewComboBoxColumn)factTgv.Columns[2]).Items.Clear();
List<Units_measur> listUnits_measur = connector.getAllDataFromDB("Units_measur").ConvertAll(new Converter<object, Units_measur>(ConverterUnits_measur));
for (int i = 0; i < listUnits_measur.Count; i++)
{
((DataGridViewComboBoxColumn)docsTgv.Columns[2]).Items.Add(listUnits_measur[i].short_name);
((DataGridViewComboBoxColumn)factTgv.Columns[2]).Items.Add(listUnits_measur[i].short_name);
}
//Заполнение комбобокса "Валюта"
((DataGridViewComboBoxColumn)docsTgv.Columns[4]).Items.Clear();
((DataGridViewComboBoxColumn)factTgv.Columns[4]).Items.Clear();
List<Valuta> listValuta = connector.getAllDataFromDB("Valuta").ConvertAll(new Converter<object, Valuta>(ConverterValuta));
for (int i = 0; i < listValuta.Count; i++)
{
((DataGridViewComboBoxColumn)docsTgv.Columns[4]).Items.Add(listValuta[i].name);
((DataGridViewComboBoxColumn)factTgv.Columns[4]).Items.Add(listValuta[i].name);
}
#endregion
#region Заполнение factTgv
factTgv.Rows.Clear();
List<Pos_group> listPos_group2 = connector.getAllDataFromDB("Pos_group AS pg WHERE pg.pt_pt_id=2 AND pg.cs_cs_id = "+ParentContractSpec.cs_id).ConvertAll(new Converter<object, Pos_group>(ConverterPos_group));
for (int j = 0; j < listPos_group2.Count; j++)
{
TreeGridNode node = factTgv.Nodes.Add(listPos_group2[j].name);
node.Tag = listPos_group2[j];
NodeCellsToTextBoxCells(node);
List<Positions> listPositionsFact = connector.getAllDataFromDB("Positions AS pos WHERE pos.del IS NULL AND pos.post_post_id=2 AND pos.pos_pos_id IS NULL AND pos.pg_pg_id = " + listPos_group2[j].pg_id + " AND pos.cs_cs_id = "+ParentContractSpec.cs_id+" ORDER BY pos.order_number asc").ConvertAll(new Converter<object, Positions>(ConverterPositions));
for (int i = 0; i < listPositionsFact.Count; i++)
{
TreeGridNode nodeChild = node.Nodes.Add(listPositionsFact[i].article, listPositionsFact[i].name, listPositionsFact[i].um_um_id.short_name, listPositionsFact[i].count,
listPositionsFact[i].val_val_id.name, listPositionsFact[i].price, listPositionsFact[i].summa, listPositionsFact[i].stat_stat_id.name, listPositionsFact[i].delivery,
listPositionsFact[i].cancel, listPositionsFact[i].official);
nodeChild.Tag = listPositionsFact[i];
recursionAddingNodes(nodeChild, listPositionsFact[i].pos_id, listPositionsFact[i].post_post_id, listPositionsFact[i].pg_pg_id);
}
}
#endregion
#region Заполнение docsTgv
docsTgv.Rows.Clear();
List<Pos_group> listPos_group = connector.getAllDataFromDB("Pos_group AS pg WHERE pg.pt_pt_id=1 AND pg.cs_cs_id = " + ParentContractSpec.cs_id).ConvertAll(new Converter<object, Pos_group>(ConverterPos_group));
for (int j = 0; j < listPos_group.Count; j++)
{
TreeGridNode node = docsTgv.Nodes.Add(listPos_group[j].name);
node.Tag = listPos_group[j];
NodeCellsToTextBoxCells(node);
List<Positions> listPositionsDocs = connector.getAllDataFromDB("Positions AS pos WHERE pos.del IS NULL AND pos.post_post_id=1 AND pos.pos_pos_id IS NULL AND pos.pg_pg_id = " + listPos_group[j].pg_id + "AND pos.cs_cs_id = " + ParentContractSpec.cs_id + " ORDER BY pos.order_number asc").ConvertAll(new Converter<object, Positions>(ConverterPositions));
for (int i = 0; i < listPositionsDocs.Count; i++)
{
TreeGridNode nodeChild = node.Nodes.Add(listPositionsDocs[i].article, listPositionsDocs[i].name, listPositionsDocs[i].um_um_id.short_name, listPositionsDocs[i].count,
listPositionsDocs[i].val_val_id.name, listPositionsDocs[i].price, listPositionsDocs[i].summa, listPositionsDocs[i].stat_stat_id.name, listPositionsDocs[i].delivery,
listPositionsDocs[i].cancel, listPositionsDocs[i].official);
nodeChild.Tag = listPositionsDocs[i];
recursionAddingNodes(nodeChild, listPositionsDocs[i].pos_id, listPositionsDocs[i].post_post_id, listPositionsDocs[i].pg_pg_id);
}
}
#endregion
#endregion
}
#endregion
}
}
ZakupochnieSpecifikaciiForm.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ControlsLibrary.Others;
using ControlsLibrary.NHibernate.MappingClasses;
using ControlsLibrary.Interfaces;
namespace Forms.FormModels
{
public partial class ZakupochnieSpecifikaciiForm : TabPage, ISessionable
{
public Connector connector = new Connector();
public static string desc = "Форма ведения договоров представляет собой...";
public ZakupochnieSpecifikaciiForm()
{
InitializeComponent();
//filterPanel1.LocalDGV = unitsDGV;
updateView(false);
}
#region Converters
private Statuses ConverterStatuses(object obj)
{
return (Statuses)obj;
}
private Units_measur Converter(object obj)
{
return (Units_measur)obj;
}
private Contract_spec ConverterContract_spec(object obj)
{
return (Contract_spec)obj;
}
private Positions ConverterPositions(object obj)
{
return (Positions)obj;
}
private Propertyes ConverterPropertyes(object obj)
{
return (Propertyes)obj;
}
#endregion
#region Члены ISessionable
public Connector Connector
{
get
{
return connector;
}
set
{
this.connector = value;
}
}
public ISessionable SessionableTabPage
{
get
{
return this;
}
set
{
throw new NotImplementedException();
}
}
public void updateView(bool onlyDetailTables)
{
#region Заполнение комбобоксов
//Заполнение комбобокса "Статус"
((DataGridViewComboBoxColumn)mainDGV.Columns[9]).Items.Clear();
List<Statuses> listStatuses = connector.getAllDataFromDB("Statuses").ConvertAll(new Converter<object, Statuses>(ConverterStatuses));
for (int i = 0; i < listStatuses.Count; i++)
{
((DataGridViewComboBoxColumn)mainDGV.Columns[9]).Items.Add(listStatuses[i].name);
}
//Заполнение комбобокса "Единица измерения"
((DataGridViewComboBoxColumn)mainDGV.Columns[12]).Items.Clear();
List<Units_measur> listUnits_measur = connector.getAllDataFromDB("Units_measur").ConvertAll(new Converter<object, Units_measur>(Converter));
for (int i = 0; i < listUnits_measur.Count; i++)
{
((DataGridViewComboBoxColumn)mainDGV.Columns[12]).Items.Add(listUnits_measur[i].short_name);
}
#endregion
#region Заполнение mainDGV
mainDGV.Rows.Clear();
List<Contract_spec> listContract_spec = connector.getAllDataFromDB("Contract_spec").ConvertAll(new Converter<object, Contract_spec>(ConverterContract_spec));
for (int i = 0; i < listContract_spec.Count; i++)
{
List<Positions> listPositions = connector.getAllDataFromDB("Positions AS pos WHERE pos.cs_cs_id = " + listContract_spec[i].cs_id).ConvertAll(new Converter<object, Positions>(ConverterPositions));
for (int j = 0; j < listPositions.Count; j++)
{
List<Propertyes> listPropertyes = connector.getAllDataFromDB("Propertyes AS prop WHERE prop.prop_id = " + listPositions[j].prop_prop_id.prop_id).ConvertAll(new Converter<object, Propertyes>(ConverterPropertyes));
mainDGV.Rows.Add(listContract_spec[i].name, listContract_spec[i].proj_proj_id.code, listContract_spec[i].cont_cont_id.name_cont,
listContract_spec[i].create_date, listContract_spec[i].author, listContract_spec[i].client, listContract_spec[i].contractor,
listContract_spec[i].summa, listContract_spec[i].comment, listContract_spec[i].stat_stat_id.name, listPositions[j].article,
listPositions[j].name, listPositions[j].um_um_id.short_name, listPositions[j].count, listPositions[j].val_val_id.name, listPositions[j].price,
listPositions[j].summa, listPositions[j].delivery, listPositions[j].cancel, listPositions[j].official, listPropertyes[0].distributor,
listPropertyes[0].price, listPropertyes[0].date_receipt, listPropertyes[0].date_delivery, listPropertyes[0].date_maturity,
listPropertyes[0].account, listPropertyes[0].responsible);
}
}
#endregion
}
#endregion
}
}
ПРИЛОЖЕНИЕ В
Логистический процесс
Размещено на Allbest.ru
Подобные документы
Общее описание предметной области и входных документов, проектирование реляционной базы данных, их инфологическая и даталогическая модели, организация и результаты выборки информации. Проектирование хранимых процедур, механизмы управления триггерами.
курсовая работа [1,3 M], добавлен 21.06.2011Разработка стратегии и выбор способа автоматизации задачи снабжения для предприятия. Построение функциональной модели бизнес-процессов предметной области. Создание программного средства "1С: Конфигурация ОМТС" для оптимального решения задач снабжения.
дипломная работа [7,2 M], добавлен 12.04.2012Описание особенностей подсистемы обеспечения медикаментами. Разработка структуры базы данных, схемы алгоритма и программного модуля, структуры реестра. Обоснование выбора языка программирования. Оценка надежности и классификация ошибок программы.
дипломная работа [1,3 M], добавлен 25.12.2014Создание учебной информационной системы, реализующей бизнес-процессы предметной области: оборот денежных средств на предприятии по торговле металлопрокатом, участвующих в предоплатах и оплатах приложений к счетам. Разработка программного обеспечения.
курсовая работа [25,7 K], добавлен 27.06.2012Содержательное описание предметной области. Структурный анализ бизнес-процесса на основе IDEF0-модели. Построение информационно-логической модели данных. Структурная схема на основе IDEF0. Даталогическая модель данных. Реализация информационной системы.
курсовая работа [849,7 K], добавлен 10.07.2014Порядок автоматизации расчетов себестоимости и длительности программного обеспечения производственного предприятия. Выбор языка программирования и системы управления базами данных. Разработка алгоритмов расчета себестоимости программного обеспечения.
дипломная работа [1,7 M], добавлен 13.06.2017Разработка программы, осуществляющей контроль за своевременностью обновления программного обеспечения с помощью рассылки электронных писем. Анализ требований к системе; выбор метода решения, алгоритма, выбор языка программирования, описание программы.
дипломная работа [5,6 M], добавлен 29.06.2011Инфологическая и даталогическая модели данных. Описание пользовательской части и используемых sql-запросов. Физическая и логическая модель web-приложения. Описание используемых программных средств, языка программирования и информационных технологий.
курсовая работа [1,3 M], добавлен 29.04.2015Создание концептуальной (инфологической) модели системы, которая позволила описать сущности предметной области и отношения между ними. Диаграммы функциональных зависимостей атрибутов сущностей базы данных. Разработка программного обеспечения для ЭВМ.
курсовая работа [877,8 K], добавлен 28.05.2012Даталогическая и инфологическая модели системы управления базой данных футбольного клуба. Обоснование выбора даталогической модели данных. Разработка структуры и системы управления базой данных. Выбор системы программирования, создание форм ввода.
курсовая работа [406,0 K], добавлен 24.12.2014