Модератор: Ramzes
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
string connSTR = WebConfigurationManager.ConnectionStrings["CalendarConnectionString"].ConnectionString;
string selStr = "SELECT EventID as [№записи], EventDate as [Дата], EventTitle as [Описание], EventCategory as [Код категории]FROM EventsOfCalendar order by EventDate";
private Int32 rez;
DateTime infoDate = DateTime.Now;
protected void Page_Load(object sender, EventArgs e)
{
GridViewShow();
gdwEvent.Visible = false;
// делаем disable кнопку удаления пока не щелкнут день, который есть в базе
Del_Btn.Enabled = false;
// выведим строку для checkbox
txtInfoHelp.Text = "---===Вывод полезной информации===---";
Cancel_Btn.Text = "Отмена";
// Ok_Btn.Text = "Добавление данных";
}
protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
//запихиваем данные в новый DataSet через GetData()
DataSet selDS = GetData();
//присвоение selectDay выбранной даты в календаре
DateTime SelectDay = calEvent.SelectedDate;
string selDate;
string mes = "";
selDate = SelectDay.ToShortDateString();
//проход по всем строкам DataSet'a и сравнение с выбранной датой календаря
foreach (DataRow selrow in selDS.Tables[0].Rows)
{
//выбор строк с описанием и датой из DataSet и конвертирование в string
string EvID = Convert.ToString(selrow["№записи"]).ToString();
string EvEvent = Convert.ToString(selrow["Описание"]).ToString();
string EvDate = Convert.ToDateTime(selrow["Дата"]).ToShortDateString();
if (SelectDay.ToShortDateString() == EvDate.ToString())
{
//если есть, то заполняем mes описанием
mes =EvEvent.ToString();
//для будущих удалений...
Del_Btn.Enabled = true;
txtID.Text = EvID.ToString();
}
}
//проверяем если чего в mes
if (mes == "")
//пусто! генерим строку об отсутсвии и добавляем дату из календаря для информации
{
txtInfoHelp.Text = "Нет события для данного дня: " + SelectDay.ToShortDateString();
//для будущих апдейтов или вставок
//в зависимости от этого значения идет или в редаткирование либо во вставку
txtEdState.Text = "0";
}
else
//если чего-то есть...
{
txtInfoHelp.Text = selDate + " - " + mes;
//для будущих апдейтов
txtEdState.Text = "1";
}
//присваиваем текстовым полям выбранные значения, если вдруг потянет поредактировать
txtDate.Text = selDate;
txtEvent.Text = mes;
}
protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
DataSet dsCalRen = GetData();
string s = e.Day.Date.ToShortDateString();
foreach (DataRow row in dsCalRen.Tables[0].Rows)
{
string EvDate = Convert.ToDateTime(row["Дата"]).ToShortDateString();
string EvCat = Convert.ToString(row["Код категории"]).ToString();
if (EvDate.Equals(s) && EvCat == "1")
{
Label lb = new Label();
lb.Text = "<BR>" + row["Описание"] as String;
e.Cell.Controls.Add(lb);
e.Cell.BackColor = System.Drawing.Color.LightSteelBlue;
}
else
if (EvDate.Equals(s) && EvCat == "2")
{
Label lb = new Label();
lb.Text = "<BR>" + row["Описание"] as String;
e.Cell.Controls.Add(lb);
e.Cell.BackColor = System.Drawing.Color.HotPink;
}
else
if (EvDate.Equals(s) && EvCat == "3")
{
Label lb = new Label();
lb.Text = "<BR>" + row["Описание"] as String;
e.Cell.Controls.Add(lb);
e.Cell.BackColor = System.Drawing.Color.LightGray;
}
}
}
protected void Add_Edit_Btn_Click(object sender, EventArgs e)
{
Enable_Edit_Element();
if (txtDate.Text == "")
{
txtDate.Text = infoDate.ToShortDateString();
}
if (txtEdState.Text == "1")
{
Ok_Btn.Text = "Обновление данных";
}
else
{
Ok_Btn.Text = "Добавление данных";
}
// добавление данных в dropdownlist с событиями
SqlConnection conTab = new SqlConnection(connSTR);
SqlCommand ComDrp = new SqlCommand("Select CategoryTitle from CategoriesOfEvents", conTab);
conTab.Open();
drpCategory.DataSource = ComDrp.ExecuteReader();
drpCategory.DataTextField = "CategoryTitle";
drpCategory.DataValueField = "CategoryTitle";
drpCategory.DataBind();
conTab.Close();
}
protected void Ok_Btn_Click(object sender, EventArgs e)
{
InsInTable();
Cancel_Btn.Text = "Закрыть режим";
}
protected void Cancel_Btn_Click(object sender, EventArgs e)
{
Disable_Edit_Element();
}
protected void Del_Btn_Click(object sender, EventArgs e)
{
Enable_Edit_Element();
// лишнее уберем
Ok_Btn.Visible = false;
// нужное добавим
txtInfoHelp.Text = "Удаление события за " + txtDate.Text + "!!!";
txtInfoHelp.Font.Size = 16;
txtInfoHelp.Font.Bold = true;
txtInfoHelp.BackColor = System.Drawing.Color.LightPink;
btn_Del_Confirm.Visible = true;
drpCategory.Visible = false;
}
protected void drpCategory_SelectedIndexChanged(object sender, EventArgs e)
{
string itemindex;
itemindex = drpCategory.SelectedIndex.ToString();
rez = Convert.ToInt32(itemindex);
}
// далее идут стандартные блоки, применяемые выше
// запихиваем в DataSet все данные из таблицы EventsOfCalendar, чтоб потом легче к ним было обратиться
private DataSet GetData()
{
SqlConnection myCon = new SqlConnection(connSTR);
SqlDataAdapter sqlAD2 = new SqlDataAdapter(selStr, myCon);
DataSet ds = new DataSet();
sqlAD2.Fill(ds);
return ds;
}
private void GridViewShow()
{
// берем данные из GetData
gdwEvent.DataSource = GetData();
gdwEvent.DataBind();
}
//вставка данных в таблицу(Add & Update)
private void InsInTable()
{
SqlConnection sqlcon = new SqlConnection(connSTR);
// объявляем переменные для работы со значениями из текстбоксов и dropdownlist
//
string inDate, inComment, inCat, inID;
inDate = txtDate.Text;
inComment = txtEvent.Text;
rez = rez + 1; //корректировка индекса, индекс первого элемента в dropdownlist
inCat = rez.ToString();
inID = txtID.Text;
//проверка, если флажок есть, то производиться update записей
//если нет, то простой insert
if (txtEdState.Text == "1")
{
// используется хран. процедура
// определение параметров команды для хр. процедуры UpdateEventsOfCalendar
SqlCommand sqlcmdUpd = new SqlCommand();
sqlcmdUpd.Connection = sqlcon;
sqlcmdUpd.CommandText = "UpdateEventsOfCalendar";
sqlcmdUpd.CommandType = CommandType.StoredProcedure;
// добавляем три параметра в команду процедуры
SqlParameter parDateUp = new SqlParameter("@EventDate", SqlDbType.SmallDateTime);
parDateUp.Value = inDate;
sqlcmdUpd.Parameters.Add(parDateUp);
SqlParameter parTitleUp = new SqlParameter("@EventTitle", SqlDbType.NVarChar, 50);
parTitleUp.Value = inComment;
sqlcmdUpd.Parameters.Add(parTitleUp);
SqlParameter parCategUp = new SqlParameter("@EventCategory", SqlDbType.NVarChar, 50);
parCategUp.Value = inCat;
sqlcmdUpd.Parameters.Add(parCategUp);
SqlParameter parIdUp = new SqlParameter("@EventID", SqlDbType.Int);
parIdUp.Value = inID;
sqlcmdUpd.Parameters.Add(parIdUp);
// ну в путь! открываем конект
sqlcon.Open();
//исполняем команду и если удачно
try
{
sqlcmdUpd.ExecuteNonQuery();
txtInfoHelp.BackColor = System.Drawing.Color.SkyBlue;
txtInfoHelp.Text = "Данные обновлены!";
}
// ну если вдруг ошибка, то нам сюды
catch (Exception exp)
{
txtInfoHelp.BackColor = System.Drawing.Color.Red;
txtInfoHelp.Text = "Ошибочка: " + exp.Message;
}
finally
{
//закрываем соединение
sqlcon.Close();
GridViewShow();
gdwEvent.Visible = true;
Cancel_Btn.Focus();
}
}
else
{
// используется хран. процедура InsertEventsOfCalendar
// определение параметров команды для хр. процедуры
SqlCommand sqlcmdIns = new SqlCommand();
sqlcmdIns.Connection = sqlcon;
sqlcmdIns.CommandText = "InsertEventsOfCalendar";
sqlcmdIns.CommandType = CommandType.StoredProcedure;
// добавляем три параметра в команду процедуры
SqlParameter parDateIns = new SqlParameter("@EventDate", SqlDbType.SmallDateTime);
parDateIns.Value = inDate;
sqlcmdIns.Parameters.Add(parDateIns);
SqlParameter parTitleIns = new SqlParameter("@EventTitle", SqlDbType.NVarChar, 50);
parTitleIns.Value = inComment;
sqlcmdIns.Parameters.Add(parTitleIns);
SqlParameter parCategIns = new SqlParameter("@EventCategory", SqlDbType.NVarChar, 50);
parCategIns.Value = inCat;
sqlcmdIns.Parameters.Add(parCategIns);
// ну в путь! открываем конект
sqlcon.Open();
//исполняем команду и если удачно
try
{
sqlcmdIns.ExecuteNonQuery();
txtInfoHelp.BackColor = System.Drawing.Color.SkyBlue;
txtInfoHelp.Text = "Данные занесли!";
}
// ну если вдруг ошибка, то нам сюды
catch (Exception exp)
{
txtInfoHelp.BackColor = System.Drawing.Color.Red;
txtInfoHelp.Text = "Ошибочка: " + exp.Message;
}
finally
{
//закрываем соединение
sqlcon.Close();
GridViewShow();
gdwEvent.Visible = true;
Cancel_Btn.Focus();
}
}
}
private void Enable_Edit_Element()
{
//делаются видимыми элементы редактирования и сама таблица
gdwEvent.Visible = true;
txtDate.Visible = true;
txtEvent.Visible = true;
drpCategory.Visible = true;
Ok_Btn.Visible = true;
Cancel_Btn.Visible = true;
// убираем лишние элементы
calEvent.Visible = false;
Add_Edit_Btn.Visible = false;
Del_Btn.Visible = false;
txtInfoHelp.Font.Size = 10;
txtInfoHelp.BackColor = System.Drawing.Color.White;
txtInfoHelp.Font.Bold = false;
}
private void Disable_Edit_Element()
{
//теперь наоборот
gdwEvent.Visible = false;
txtDate.Visible = false;
txtEvent.Visible = false;
drpCategory.Visible = false;
Ok_Btn.Visible = false;
Cancel_Btn.Visible = false;
btn_Del_Confirm.Visible = false;
// ------------------------
calEvent.Visible = true;
Add_Edit_Btn.Visible = true;
Del_Btn.Visible = true;
txtInfoHelp.Font.Size = 10;
txtInfoHelp.BackColor = System.Drawing.Color.White;
txtInfoHelp.Font.Bold = false;
}
protected void btn_Del_Confirm_Click(object sender, EventArgs e)
{
// собственно удаление через хранимую процедуру DeleteEventsOfCalendar в базе
string ID_Del;
ID_Del = txtID.Text;
SqlConnection sqlcon = new SqlConnection(connSTR);
// сюда же sqlcommand
SqlCommand sqlcmdDel = new SqlCommand();
// название хр. процедуры и ее параметры
sqlcmdDel.Connection = sqlcon;
sqlcmdDel.CommandText = "DeleteEventsOfCalendar";
sqlcmdDel.CommandType = CommandType.StoredProcedure;
SqlParameter parID = new SqlParameter("@EventID", SqlDbType.Int);
parID.Value = ID_Del;
sqlcmdDel.Parameters.Add(parID);
// ну в путь! открываем конект
sqlcon.Open();
//исполняем команду и если удачно
try
{
sqlcmdDel.ExecuteNonQuery();
txtInfoHelp.BackColor = System.Drawing.Color.SkyBlue;
txtInfoHelp.Text = "Данные за дату: " + txtDate.Text + " удалены!";
}
// ну если вдруг ошибка, то нам сюды
catch (Exception exp)
{
txtInfoHelp.BackColor = System.Drawing.Color.Red;
txtInfoHelp.Text = "Ошибочка: " + exp.Message;
}
finally
{
//закрываем соединение
sqlcon.Close();
GridViewShow();
gdwEvent.Visible = true;
Cancel_Btn.Text = "Закрыть режим";
Cancel_Btn.Focus();
}
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" UICulture= "Auto" %>
<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Главная страница</title>
</head>
<body>
<form id="form1" runat="server">
<sampleheader:Header ID ="Header1" runat ="server"></sampleheader:Header>
<br />
<asp:Calendar ID="calEvent" runat="server" BackColor="White" BorderColor="White"
BorderWidth="1px" Font-Names="Verdana" Font-Size="9pt"
ForeColor="Black" Height="208px" NextPrevFormat="FullMonth" Width="782px" ToolTip="Стандартный календарь c обработкой Day Render" style="left: 10px; position: relative; top: -11px" OnSelectionChanged="Calendar1_SelectionChanged" FirstDayOfWeek="Monday" OnDayRender="Calendar1_DayRender">
<SelectedDayStyle BackColor="#333399" ForeColor="White" />
<TodayDayStyle BackColor="#CCCCCC" />
<WeekendDayStyle BackColor="#C0FFFF" />
<OtherMonthDayStyle ForeColor="#999999" />
<NextPrevStyle Font-Size="8pt" ForeColor="#333333" Font-Bold="True" VerticalAlign="Bottom" />
<DayHeaderStyle Font-Bold="True" Font-Size="8pt" />
<TitleStyle BackColor="White" Font-Bold="True" Font-Size="12pt" ForeColor="#333399" BorderColor="Black" BorderWidth="4px" />
</asp:Calendar>
<asp:TextBox ID="txtInfoHelp" runat="server" BorderStyle="None" ReadOnly="True"
Width="626px"></asp:TextBox>
<asp:Button ID="Add_Edit_Btn" runat="server" OnClick="Add_Edit_Btn_Click" Text="Добавить/редактировать" />
<asp:Button ID="Del_Btn" runat="server" OnClick="Del_Btn_Click" Text="Удалить" /><br />
<asp:GridView ID="gdwEvent" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None">
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#999999" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</asp:GridView>
<br />
<asp:TextBox ID="txtEdState" runat="server" ReadOnly="True" Visible="False" Width="3px"></asp:TextBox>
<asp:TextBox ID="txtID" runat="server" Width="1px" Visible="False"></asp:TextBox>
<asp:TextBox ID="txtDate" runat="server" Visible="False" ReadOnly="True"></asp:TextBox>
<asp:TextBox ID="txtEvent" runat="server" Visible="False"></asp:TextBox>
<asp:DropDownList ID="drpCategory" runat="server" Visible="False" OnSelectedIndexChanged="drpCategory_SelectedIndexChanged">
</asp:DropDownList>
<asp:Button ID="Ok_Btn" runat="server" OnClick="Ok_Btn_Click" Visible="False" />
<asp:Button ID="btn_Del_Confirm" runat="server" Text="Удалить?" Visible="False" OnClick="btn_Del_Confirm_Click" />
<asp:Button ID="Cancel_Btn" runat="server" OnClick="Cancel_Btn_Click" Text="Отмена"
Visible="False" />
<br />
<div>
</div>
<samplebottom:Bottom ID = "Bottom1" runat = "server"></samplebottom:Bottom>
</form>
</body>
</html>
USE [Calendar]
GO
/****** Object: Table [dbo].[CategoriesOfEvents] Script Date: 08/10/2007 12:39:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[CategoriesOfEvents](
[CategoryID] [nvarchar](50) COLLATE Cyrillic_General_CI_AS NOT NULL,
[CategoryTitle] [nvarchar](50) COLLATE Cyrillic_General_CI_AS NULL,
[CategoryColor] [nvarchar](50) COLLATE Cyrillic_General_CI_AS NULL,
CONSTRAINT [PK_CategoriesOfEvents] PRIMARY KEY CLUSTERED
(
[CategoryID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
USE [Calendar]
GO
/****** Object: Table [dbo].[EventsOfCalendar] Script Date: 08/10/2007 12:39:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[EventsOfCalendar](
[EventID] [int] IDENTITY(1,1) NOT NULL,
[EventDate] [smalldatetime] NULL,
[EventTitle] [nvarchar](50) COLLATE Cyrillic_General_CI_AS NOT NULL,
[EventCategory] [nvarchar](50) COLLATE Cyrillic_General_CI_AS NULL,
CONSTRAINT [PK_EventsOfCalendar] PRIMARY KEY CLUSTERED
(
[EventID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
USE [Calendar]
GO
ALTER TABLE [dbo].[EventsOfCalendar] WITH CHECK ADD CONSTRAINT [FK_EventsOfCalendar_CategoriesOfEvents] FOREIGN KEY([EventCategory])
REFERENCES [dbo].[CategoriesOfEvents] ([CategoryID])
ON UPDATE CASCADE
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[InsertEventsOfCalendar]
@EventDate smalldatetime,
@EventTitle nvarchar(50),
@EventCategory nvarchar(50)
AS
insert into [Calendar].[dbo].[EventsOfCalendar]
([EventDate],
[EventTitle],
[EventCategory])
values (@EventDate, @EventTitle, @EventCategory);
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[UpdateEventsOfCalendar]
@EventID int,
@EventDate smalldatetime,
@EventTitle nvarchar(50),
@EventCategory nvarchar(50)
AS
update [Calendar].[dbo].[EventsOfCalendar]
SET EventDate =@EventDate,
EventTitle=@EventTitle,
EventCategory=@EventCategory
where EventID=@EventID
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[DeleteEventsOfCalendar]
@EventID int
AS
delete from [Calendar].[dbo].[EventsOfCalendar] where EventID=@EventID
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29