| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Обновление данных в БД
Часто нужно модифицировать поля в существующей базе данных. Этот раздел
показывает, как это следует делать. В этом примере, на показываемой странице,
слева от отображаемого DataGrid есть дополнительный столбец. Модификация существующих данных 1. Импортируем необходимые пространства имён.
<%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SQL" %> <%@ Import Namespace="System.Text"%> <html>
В рамках тэга <script language="C#" runat="server">реализуются пять примеров функций: Page_Load, MyDataGridEdit, MyDataGridCancel, MyDataGridUpdate и BindGrid. Эти функции описаны более подробно в представленных ниже шагах.
<script language="C#" runat="server"> SQLConnection myConnection;
2. Определяем функцию Page_Load, которая устанавливает информацию о подключении к базе данных "pubs". Также она проверяет, что эта страница не является PostBack, но если это так, вызывает специальную функцию BindGrid. BindGrid описана в шаге 4, главы 5. "Вставка данных в SQL базу данных". 3. Определяем функцию MyDataGrid_Edit. Эта функция устанавливает индекс для строки в DataGrid, который был запрошен, и затем вызывает BindGrid.
public void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs E)
{
MyDataGrid.EditItemIndex = (int)E.Item.ItemIndex;
BindGrid();
}
4. Определяем функцию MyDataGrid_Cancel. Эта функция сбрасывает индекс к предыдущим параметрам настройки строки, и затем вызывает BindGrid.
public void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs E)
{
MyDataGrid.EditItemIndex = -1;
BindGrid();
}
5. Определяем функцию MyDataGrid_Update. Когда нажата кнопка "update", эта функция строит разграниченную запятыми командную строку SQL UPDATE и пары fieldname/value (fieldname=value,). Выполняется соединение с базой данных, обновляется информация полей строки в базе данных, и затем снова пересоздаётся DataGrid, что позволяет увидеть модифицированную информацию.
public void MyDataGrid_Update(Object sender,
DataGridCommandEventArgs E)
{
а) Устанавливаем параметры использования SQLCommand и информацию подключения, которая была определена в шаге 2.
String updateCmd = "UPDATE Authors SET au_id = @Id,
au_lname = @LName, au_fname = @FName,
phone = @Phone, address = @Address,
city = @City, state = @State, zip = @Zip,
contract = @Contract where au_id = @Id";
SQLCommand myCommand = new SQLCommand(updateCmd, myConnection);
myCommand.Parameters.Add(new SQLParameter("@Id",
SQLDataType.VarChar));
myCommand.Parameters.Add(new SQLParameter("@LName",
SQLDataType.VarChar));
myCommand.Parameters.Add(new SQLParameter("@FName",
SQLDataType.VarChar));
myCommand.Parameters.Add(new SQLParameter("@Phone",
SQLDataType.Char));
myCommand.Parameters.Add(new SQLParameter("@Address",
SQLDataType.VarChar));
myCommand.Parameters.Add(new SQLParameter("@City",
SQLDataType.VarChar));
myCommand.Parameters.Add(new SQLParameter("@State",
SQLDataType.VarChar));
myCommand.Parameters.Add(new SQLParameter("@Zip",
SQLDataType.VarChar));
myCommand.Parameters.Add(new SQLParameter("@Contract",
SQLDataType.VarChar));
String[] cols = {"@Id", "@LName", "@FName", "@Phone",
"@Address", "@City","@State","@Zip","@Contract"};
б) Для SQLCommand инициализируем параметр "@id", для строки с таким id, который определяет выбранную для обновления строку.
myCommand.Parameters["@Id"].Value =
MyDataGrid.DataKeys[(int)E.Item.ItemIndex];
в) Создаём массив имён столбцов.
String[] cols = {"@Id","@LName","@FName","@Phone",
"@Address", "@City","@State","@Zip","@Contract"};
г) Пропуская первые, вторые и последние столбцы, выполняем итерации по столбцам, проверяя их пустые значений. Если пустое значение найдено, выдаём пользователю соответствующее окно сообщения. Также, инициализируем значения параметров SQLCommand.
int numCols = E.Item.Cells.Count;
for (int i=2; i<numCols-1; i++)
{
String colvalue =
((TextBox)E.Item.Cells[i].Controls[0]).Text;
if (i<6 && colvalue == "")
{
Message.InnerHtml = "ОШИБКА: Пустое значение не допустимо
для полей Author ID, Name или Phone";
Message.Style["color"] = "red";
return;
}
myCommand.Parameters[cols[i-1]].Value = colvalue;
}
д) Добавляем в конец последнее поле, конвертируя значения true/false в 0/1.
if (String.Compare(((TextBox)E.Item.Cells
[numCols-1].Controls[0]).Text, "true", true)==0)
myCommand.Parameters["@Contract"].Value = "1";
else
myCommand.Parameters["@Contract"].Value = "0";
е) Соединяемся с базой данных, и обновляем информацию.
myCommand.ActiveConnection.Open();
ж) Проверяем, что данные были успешно модифицированы и возвращаем пользователю соответствующее сообщение.
try
{
myCommand.Execute(ref rowsAffected);
Message.InnerHtml = "<b>Record Updated</b><br>" +
updateCmd.ToString();
MyDataGrid.EditItemIndex = -1;
}
catch (SQLException e)
{
if (e.Number == 2627)
Message.InnerHtml = "ОШИБКА: Запись с таким первичным
ключом уже существует ";
else
Message.InnerHtml = "ОШИБКА: Невозможно добавить запись,
пожалуйста, убедитесь, что поля правильно заполнены";
Message.Style["color"] = "red";
}
з) Закрываем подключение.
myCommand.ActiveConnection.Close();
и) Снова пересоздаём DataGrid, чтобы отобразить модифицированную информацию.
BindGrid();
}
6. Определение функции BindGrid. Эта функция подключается к базе данных и реализует стандартный SQL запрос "SELECT *", чтобы получить все данные из таблицы базы "Authors". BindGrid описана в шаге 4, главы 5. "Вставка данных в SQL базу данных". 7. Внутри <body>, отображаем данные.
<body style="font: 10pt verdana">
<form runat="server">
<h3><font face="Verdana">Updating a Row of Data</font></h3>
<span id="Message" MaintainState="false" style="font: arial 11pt;"
runat="server"/><p>
<ASP:DataGrid id="MyDataGrid" runat="server"
Width="800"
BackColor="#ccccff"
BorderColor="black"
ShowFooter="false"
CellPadding=3
CellSpacing="0"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
OnEditCommand="MyDataGrid_Edit"
OnCancelCommand="MyDataGrid_Cancel"
OnUpdateCommand="MyDataGrid_Update"
DataKeyField="au_id"
>
<property name="Columns">
<asp:EditCommandColumn EditText="Edit" CancelText="Cancel"
UpdateText="Update" ItemStyle-Wrap="false"/>
</property>
</ASP:DataGrid>
</form>
</body>
</html>
Рубрика: Базы данных в Asp.NET
HTML 5: пять вещей вызывающих особый интер....
HTML 5 — это грядущее обновление гипертекстового языка разметки, основного способа создания контента для размещения его во всемирной паутине. Разработка HTML остановилась в 1999 году, на версии HTML 4.01 и с тех пор web-содержимое изменилось так, что текущие спецификации HTML перестали соответствовать сегодняшним требованиям. HTML 5 нацелен на то, чтобы увеличить функциональную совместимость HTML и соответствовать растущим требованиям разнообразного и смешанного web-контента. HTML 5 так же нацелен на устранение недостатков четвертой версии. В этой статье мы взглянем на 5 новых интересных вещей в HTML 5.
Подробнее... |
Рубрика: Html
| Добавлено: 22.12.2008
asp.net: ListView с разных сторон.
Элемент управления ListView был представлен в .Net Framework 3.5 как замена устаревшему GridView. Новый элемент имеет более расширенный функционал, чем его предшественник, но в тоже время лишен некоторых внутренних механизмов, что впрочем целиком следствие из расширенной универсальности ListView. Среди отличий ListView и GridView можно назвать и гибкую настройку разметки, что позволяет выводить данные не только в табличном виде, но и вообще в любом каком пожелает программист. Благодаря шаблонам ItemTemplate, EditItemTemplate, InsertItemTeplate можно настроить внешний вид при любом из состояний ListView: редактировании или выборе элемента.
Подробнее... |
Рубрика: .NET компоненты
| Добавлено: 22.12.2008
Создание кросс-таб отчета в Stimulsoft Rep....
Компания Стимулсофт предоставляет для разработчиков мощный набор инструментов для создания отчетов для Microsoft Visual Studio .Net 2005 и 2008; эти инструменты доступны как для Windows Forms, так и для Web Forms. Это генератор отчетов Stimulsoft Reports.Net. Генератор отчетов Stimulsoft Reports.Net имеет ряд особенностей: простая работа с дизайнером отчетов, полная поддержка экспорта в PDF, Word, Excel и многие другие форматы. Crystal Report и Microsoft Reporting Service – очень хорошие программные продукты для повседневной работы, но, если Вам необходимо создать отчеты с поддержкой кросс-табов, drill down, Ajax, штрих-кодов и возможностью подключения одновременно более одного источника данных, то Stimulsoft Reports.Net поможет Вам сэкономить массу времени. Также, данный генератор отчетов позволяет пользователям создавать свои собственные отчеты любой сложности. И все эти особенности делают Stimulsoft Reports.Net хорошим выбором в сфере программных продуктов для Business Intelligence.
Подробнее... |
Рубрика: .NET компоненты
| Добавлено: 22.12.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|