Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Файл editrow.aspx.cs




using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.Configuration; //для чтения из файла Web.Config

using System.Data; //Содержит объект DataSet

using MySql.Data; //Для работы с БД MySQL

using MySql.Data.MySqlClient;

using System.Drawing;

 

namespace WebApplication3

{

public partial class WebForm2: System.Web.UI.Page

{

String CurIDGr;

String CurIDGrRow;

String CurIDGRH;

int CurDay;

String CurVal;

MySqlDataAdapter GrafikDA, GrafikDA2;

DataSet GrafikDS;

MySqlConnection conn;

 

protected void Page_Load(object sender, EventArgs e)

{

Label1.Visible = false;

SqlDataSource1.ConnectionString = WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString;

 

//считываем значения IDGr и IDGrRow из параметров URL веб-страницы

CurIDGrRow = Request.QueryString["idgr"];

//Из БД считываем значения графика

conn = new MySqlConnection(WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString);

conn.Open();

GrafikDS = new DataSet();

//считываем данные ряда графика

String sql = "SELECT grafikrows.IDGrRow, grafikrows.IDGraf, grafikrows.GrafPos, grafikrows.Smena, grafikrows.IDPerson," +

" person.LastName, person.FirstName, person.FatherName, person.Tabnom FROM grafikrows LEFT OUTER JOIN person" +

" ON grafikrows.IDPerson = person.IDPerson WHERE grafikrows.IDGrRow=" + CurIDGrRow;

GrafikDA2 = new MySqlDataAdapter(sql, conn);

GrafikDA2.Fill(GrafikDS, "grafikrows");

if (GrafikDS.Tables["grafikrows"].Rows.Count > 0)

{

CurIDGr = GrafikDS.Tables["grafikrows"].Rows[0]["IDGraf"].ToString();

//№ строки в графике

Table2.Rows[0].Cells[1].Text = GrafikDS.Tables["grafikrows"].Rows[0]["GrafPos"].ToString();

//смена

Table2.Rows[1].Cells[1].Text = GrafikDS.Tables["grafikrows"].Rows[0]["Smena"].ToString();

//должность

if (Convert.ToInt32(GrafikDS.Tables["grafikrows"].Rows[0]["GrafPos"]) % 2 == 1)

Table2.Rows[2].Cells[1].Text = "маш-ст";

else

Table2.Rows[2].Cells[1].Text = "п/м";

 

if (GrafikDS.Tables["grafikrows"].Rows[0]["IDPerson"].ToString()!="")

{

//ФИО (таб. №)

Table2.Rows[3].Cells[1].Text = GrafikDS.Tables["grafikrows"].Rows[0]["Lastname"].ToString() + " " + GrafikDS.Tables["grafikrows"].Rows[0]["Firstname"].ToString().Substring(0, 1) + "." + GrafikDS.Tables["grafikrows"].Rows[0]["FatherName"].ToString().Substring(0, 1) + ". (" + GrafikDS.Tables["grafikrows"].Rows[0]["Tabnom"].ToString() + ")";

}

}

 

//считываем данные графика

sql = "SELECT * FROM grafik LEFT OUTER JOIN vidwork ON grafik.IDVidWork = vidwork.IDVidWork" +

" LEFT OUTER JOIN months ON grafik.GrMonth = months.MonthNum LEFT OUTER JOIN lokomotiv" +

" ON grafik.IDLokomotiv = lokomotiv.LokID WHERE grafik.IDGr=" + CurIDGr;

GrafikDA = new MySqlDataAdapter(sql, conn);

GrafikDA.Fill(GrafikDS, "grafik");

if (GrafikDS.Tables["grafik"].Rows.Count > 0)

{

//ID

Table1.Rows[0].Cells[1].Text = CurIDGr;

//год

Table1.Rows[1].Cells[1].Text = GrafikDS.Tables["grafik"].Rows[0]["GrYear"].ToString();

//месяц

Table1.Rows[2].Cells[1].Text = GrafikDS.Tables["grafik"].Rows[0]["MonthNameRu"].ToString();

//вид работ

Table1.Rows[3].Cells[1].Text = GrafikDS.Tables["grafik"].Rows[0]["NameVidWork"].ToString();

//локомотив

Table1.Rows[4].Cells[1].Text = GrafikDS.Tables["grafik"].Rows[0]["FullName"].ToString();

//начало работы

Table1.Rows[5].Cells[1].Text = GrafikDS.Tables["grafik"].Rows[0]["BeginWork"].ToString();

}

 

//Определяем количество дней в выбранном месяце

Int32 n = 0;

try

{

n = DateTime.DaysInMonth(Convert.ToInt32(GrafikDS.Tables["grafik"].Rows[0]["GrYear"]), Convert.ToInt32(GrafikDS.Tables["grafik"].Rows[0]["GrMonth"])); //количество дней в выбранном месяце

}

catch

{

Label1.Text = "Ошибка при вычислении количества дней в месяце";

Label1.Visible = false;

//return;

}

 

//Заполняем таблицу Table3 с данными за месяц

Table3.Rows.Clear();

//считываем часовые данные ряда графика

sql = "SELECT * FROM grafikhours WHERE IDGrRow=" + GrafikDS.Tables["grafikrows"].Rows[0]["IDGrRow"].ToString() + " ORDER BY DayOfMonth";

GrafikDA = new MySqlDataAdapter(sql, conn);

GrafikDA.Fill(GrafikDS, "grafikhours");

TableRow rowNew1, rowNew2;

TableCell celNew;

TextBox txtBox;

String str1;

float Value;

int k = 0;

 

//Два ряда создаем

rowNew1 = new TableRow(); //для номеров дней

rowNew2 = new TableRow(); //для значений часов работы

 

for (int i = 0; i < n; i++) //для каждого числа месяца

{

// верхний ряд - день месяца

celNew = new TableCell();

celNew.Text = Convert.ToString(i + 1);

celNew.HorizontalAlign = HorizontalAlign.Center;

rowNew1.Cells.Add(celNew);

 

// нижний ряд - значение

celNew = new TableCell();

if (GrafikDS.Tables["grafikhours"].Rows.Count == 0)

{

// в БД для данной строки графика данных нет, потому ставим пустую строку

str1 = "";

}

else

{

//в БД есть значение для этого дня

if ((i+1)!= Convert.ToInt32(GrafikDS.Tables["grafikhours"].Rows[k]["DayOfMonth"].ToString()))

{

//в БД нет данных по этому дню

str1 = "";

}

else

{

//в БД есть данные по дням. Пытаемся найти в таблице БД значение для j-го дня

str1 = GrafikDS.Tables["grafikhours"].Rows[k]["GrVal"].ToString();

//проверка введенного значения на соответсвие формату

if (str1!= "Х")

{

if (float.TryParse(GrafikDS.Tables["grafikhours"].Rows[k]["GrVal"].ToString().Replace("/н", ""), out Value))

{

Label1.Visible = false;

}

else //Присутствует буква.

{

str1 = "";

Label1.Text = "Значение часов работы не соотвествует формату";

Label1.Visible = true;

}

}

if (k < GrafikDS.Tables["grafikhours"].Rows.Count - 1) k++;

}

}

//добавляем текстовое поле в ячейку со значением отработанных часов

txtBox = new TextBox();

txtBox.Text = str1;

txtBox.Width = 30;

txtBox.BackColor = Color.Cyan;

txtBox.ID = "txtBox" + (i+1);

txtBox.AutoPostBack = true;

txtBox.TextChanged += new System.EventHandler(this.txtBox_TextChanged); //определяем обработчик события

celNew.Controls.Add(txtBox);

celNew.HorizontalAlign = HorizontalAlign.Center;

rowNew2.Cells.Add(celNew);

}

//добавляем сформированные ряды в таблицу

Table3.Rows.Add(rowNew1);

Table3.Rows.Add(rowNew2);

}

 

protected void Button3_Click(object sender, EventArgs e)

{

//Переход на страницу выбора сотрудника

Response.Redirect("persget.aspx?idgr=" + CurIDGrRow);

}

 

protected void Button1_Click(object sender, EventArgs e)

{

//Нажатие кнопки Применить. Сохраняем изменения. Возвращаемся к графику c IDGr=CurIDGr

Response.Redirect("grafik.aspx?id=" + CurIDGr);

}

 

protected void txtBox_TextChanged(object sender, EventArgs e)

{

String sql;

//Обработчик изменения значения часов в таблице

if ((sender as TextBox).ID.Substring(0, 6) == "txtBox")

{

//Извлекаем из ID TextBox-а, число, а также берем его значение

CurDay = Convert.ToInt32(((sender as TextBox).ID.Substring(6)));

CurVal = (sender as TextBox).Text.Trim().ToUpper();

//приводим обозначения к единому формату

CurVal = CurVal.Replace("X", "Х"); //замена английской буквы на русскую

CurVal = CurVal.Replace("/Н", "/н"); //меняем большую Н на маленькую

(sender as TextBox).Text = CurVal;

//Проверяем наличие записи в БД

try

{

conn = new MySqlConnection(WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString);

conn.Open();

GrafikDS = new DataSet();

//Читаем значение из БД

sql = "SELECT * FROM grafikhours WHERE IDGrRow=" + CurIDGrRow + " AND DayOfMonth=" + CurDay;

GrafikDA = new MySqlDataAdapter(sql, conn);

GrafikDA.Fill(GrafikDS, "grafikhours");

}

catch (Exception ex)

{

Label1.Text = "Ошибка при записи данных в БД. " + ex.ToString();

Label1.Visible = true;

conn.Close();

return;

}

 

if (GrafikDS.Tables["grafikhours"].Rows.Count == 0)

{

//И значение часов не пустое

if (CurVal!= "")

{

//Записи нет, поэтому добавляем ее в БД

SqlDataSource1.Insert();

}

}

else

{

//Запись есть

//новое значение пустое. поэтому удаляем его в БД

if (CurVal == "")

{

CurIDGRH = GrafikDS.Tables["grafikhours"].Rows[0]["IDGRH"].ToString();

SqlDataSource1.Delete();

}

else

{

//новое значение не пустое, поэтому обновляем её в БД

CurIDGRH = GrafikDS.Tables["grafikhours"].Rows[0]["IDGRH"].ToString();

SqlDataSource1.Update();

}

}

}

}

 

protected void SqlDataSource1_Inserting(object sender, SqlDataSourceCommandEventArgs e)

{

//Перед вызовом запроса на вставку программно меняем значение параметра

e.Command.Parameters["IDGrRow"].Value = CurIDGrRow;

e.Command.Parameters["DayOfMonth"].Value = CurDay;

e.Command.Parameters["GrVal"].Value = CurVal;

}

 

protected void SqlDataSource1_Updating(object sender, SqlDataSourceCommandEventArgs e)

{

e.Command.Parameters["IDGRH"].Value = CurIDGRH;

e.Command.Parameters["GrVal"].Value = CurVal;

}

}

}




Поделиться с друзьями:


Дата добавления: 2015-08-31; Просмотров: 388; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.042 сек.