コード例 #1
0
ファイル: TabelForm.cs プロジェクト: pSasa/c-
 private bool UpdateItems(DataGridView grid)
 {
     //force update
     //dont save changes
     itemChange = false;
     grid.Rows.Clear();
     SocketClient socket = new SocketClient();
     Item item = GetHelperFromSelectedGrid(grid);
     Item[] items = GetArrayFromSelectedGrid(grid);
     bool res = socket.GetAllItems(ref items, item);
     if (items != null)
     {
         foreach (Item i in items)
         {
             DataGridViewRow row = new DataGridViewRow();
             row.CreateCells(grid);
             PutItemToRow(ref row, i);
             grid.Rows.Add(row);
         }
     }
     if (item is Person)
     {
         persons = (Person[])items;
     }
     else if (item is Subject)
     {
         subjects = (Subject[])items;
     }
     else if (item is Mark)
     {
         marks = (Mark[])items;
     }
     itemChange = false;
     return res;
 }
コード例 #2
0
ファイル: TabelForm.cs プロジェクト: pSasa/c-
 private void EditMark(bool isAdd)
 {
     if (subjects == null || subjects.Length == 0 ||
        persons == null || persons.Length == 0)
     {
         MessageBox.Show("Для ввода оценок нужно добавить студентов и предметы.", "Предупреждение",
             MessageBoxButtons.OK, MessageBoxIcon.Warning);
         return;
     }
     Mark mark = null;
     DataGridViewRow row = null;
     if (!isAdd)
     {
         mark = (Mark)markGrid.CurrentRow.Cells[0].Value;
         row = markGrid.CurrentRow;
     }
     MarkForm form = new MarkForm();
     form.subjects = subjects;
     form.persons = persons;
     form.mark = mark;
     form.FillData();
     if (form.ShowDialog() == DialogResult.OK)
     {
         mark = form.mark;
         Item item = (Item)mark;
         SocketClient client = new SocketClient();
         if (client.SaveItem(ref item))
         {
             List<Item> tmp = new List<Item>(marks.Length + 1);
             tmp.AddRange(marks);
             tmp.Add(item);
             marks = tmp.ToArray();
             PutItemToRow(ref row, item);
             if (isAdd)
             {
                 markGrid.Rows.Add(row);
                 ValidateButtons();
             }
         }
     }
 }
コード例 #3
0
ファイル: TabelForm.cs プロジェクト: pSasa/c-
 private void personGreed_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
 {
     DataGridViewRow row = ((DataGridView)sender).Rows[e.RowIndex];
     if (itemChange)
     {
         //row was changed
         DialogResult answer = MessageBox.Show("Сохранить?", "Сохранить?", MessageBoxButtons.YesNoCancel);
         if (answer == DialogResult.Cancel)
         {
             e.Cancel = true;
             row.ErrorText = string.Empty;
             return;
         }
         else if (answer == DialogResult.Yes)
         {
             Item item = GetItemFromSelectedRow((DataGridView)sender);
             if (item == null)
             {
                 e.Cancel = true;
                 row.ErrorText = "Некоректные данные";
                 return;
             }
             if (!item.Validate())
             {
                 e.Cancel = true;
                 row.ErrorText = "Некоректные данные";
                 return;
             }
             SocketClient socket = new SocketClient();
             if (socket.SaveItem(ref item))
             {
                 row.Cells[0].Value = item.id.ToString();
                 row.ErrorText = string.Empty;
                 Item[] items = GetArrayFromSelectedGrid((DataGridView)sender);
                 List<Item> tmp = new List<Item>(items.Length + 1);
                 tmp.AddRange(items);
                 tmp.Add(item);
                 SetArrayFromSelectedGrid((DataGridView)sender, tmp.ToArray());
                 ValidateButtons();
             }
             else
             {
                 row.ErrorText = "ошибка сервера";
                 e.Cancel = true;
             }
         }
         else
         {
             int id = 0;
             Int32.TryParse(row.Cells[0].Value.ToString(), out id);
             if (id == 0)
             {
                 //new person - clear row
                 foreach (DataGridViewCell cell in row.Cells)
                 {
                     if (cell is DataGridViewComboBoxCell)
                     {
                         cell.Value = ((DataGridViewComboBoxCell)cell).Items[0];
                     }
                     else
                     {
                         cell.Value = string.Empty;
                     }
                 }
                 //это писец!!! я задолбался это решение гуглить!
                 BeginInvoke(new Action(delegate { ((DataGridView)sender).Rows.RemoveAt(e.RowIndex); }));
             }
             else
             {
                 //update from caсhe
                 Item[] items = GetArrayFromSelectedGrid(personGrid);
                 foreach (Item item in items)
                 {
                     if (item.id == id)
                     {
                         PutItemToRow(ref row, item);
                         break;
                     }
                 }
             }
             row.ErrorText = string.Empty;
         }
     }
     itemChange = e.Cancel;
 }
コード例 #4
0
ファイル: TabelForm.cs プロジェクト: pSasa/c-
 private void delPerson_Click(object sender, EventArgs e)
 {
     DataGridView grid = GetGridFromDeleteButton((Button)sender);
     DataGridViewRow row = grid.CurrentRow;
     if (row == null || row.Cells[1].Value == null)
     {
         return;
     }
     if (MessageBox.Show("Удалить?", "Удалить?", MessageBoxButtons.YesNo) == DialogResult.Yes)
     {
         SocketClient socket = new SocketClient();
         Item item = GetItemFromSelectedRow(grid);
         if (socket.DeleteItem(item))
         {
             grid.Rows.Remove(row);
             itemChange = false;
             Item[] items = GetArrayFromSelectedGrid(grid);
             List<Item> tmp = new List<Item>(items.Length);
             tmp.AddRange(items);
             foreach (Item i in tmp)
             {
                 if (i.id == item.id)
                 {
                     tmp.Remove(i);
                     break;
                 }
             }
             SetArrayFromSelectedGrid(grid, tmp.ToArray());
             RemoveMarkByRef(item);
             ValidateButtons();
         }
     }
 }