Рассылка закрыта
При закрытии подписчики были переданы в рассылку "BloggLand и Я | Блоггландия" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
В тридцать шестом выпуске рассылки '.Net Собеседник' вы можете узнать о том,
Информационный Канал Subscribe.Ru |
.Net Собеседник #36
Содержание- От автора
- Обзор новостей
- Как удалить запись, если у неё есть подчинённые записи
- Время кода - Отображение превью изображения перед загрузкой его на сервер
- Форумы .Net на www.sql.ru
От автора
Здравствуйте, коллеги!
//структура для хранения
сохраняемой в файл информации public struct Options { public string connection; public string mailto; public string file_store_path; public string smtpmail; } /// /// Класс для сериализации объекта в xml-файл /// public class FEServerConfig { //Лишаем возможности создавать объекты этого класса private FEServerConfig (){} public static void CreateSettings(object o) { XmlSerializer myXmlSer = new XmlSerializer(o.GetType()); StreamWriter myWriter = new StreamWriter(Application.StartupPath+@"\myconfig.config"); myXmlSer.Serialize(myWriter,o); myWriter.Close(); } public static void LoadSettings(ref Options o) { XmlSerializer myXmlSer = new XmlSerializer(typeof(Options)); FileStream mySet = new FileStream(Application.StartupPath+@"\myconfig.config", FileMode.Open); o = (Options)myXmlSer.Deserialize(mySet); mySet.Close(); } } |
Использование такого класса очевидно -
Options o = new Options(); if (File.Exists(Application.StartupPath+@"\myconfig.config")) { Console.WriteLine("Reading configuration options..."); FEServerConfig.LoadSettings(ref o); } else { Console.WriteLine("Creating configuration options..."); o.mailto = "hdrummer@mail.ru"; o.connection = "data source=..."; o.file_store_path = @"c:\temp\"; o.smtpmail = "..."; FEServerConfig.CreateSettings(o); } |
На этом всё - желаю интересного чтения.
Обзор новостей
-
Бесплатные приложения на платформе .Net
- Уважаемые коллеги! Если вы создали бесплатное приложение, работающее на платформе .Net и хотите познакомить с ним как можно большее число людей, я готов разместить информацию о таком приложении в рассылке. Если заинтересовались - пишите на email.
-
Дни
разработчика Весна'05
- Место события: Санкт-Петербург, Екатеринбург, Казань, Нижний Новгород, Москва, Волгоград, Новосибирск, Самара. Подробнее по ссылке.
-
Вышел
ReSharper 1.5
- Один из лучших инструментов-добавок к VS .NET 2003: 8 новых рефакторингов, улучшение быстродействия и т.п.
-
Вышел .net Charting для
ASP.NET Версии 3.1
- Очередное обновление компонента. Теперь доступна полнофункциональная версия для разработки без ограничений по времени использования.
-
Вышел
Aspose.Word 2.2
- Aspose.Word – это .Net компонент для создания отчётов в формате Word, также позволяющий вам считывать и записывать документы в формате Word без использования Microsoft Word. Последний выпуск поддерживает .NET Framework 2.0 и Visual Studio 2005.
-
Превью и список
особенностей Aspose.Workflow
- Aspose.Workflow - расширяемый каркас автоматизации делопроизводства, включающий стандартную его реализацию, полностью основанную на спецификациях WFMC. Aspose.Workflow использует XPDL как основной формат.
Статья номера
Как удалить запись, если у неё есть подчинённые записи
ЯЗЫК: C#
Автор статьи:
Tadas Budvytis
ПЕРЕВОД: Чужа В.Ф. ака hDrummer
КОД К СТАТЬЕ:
GetRelatedRec.zip
Проблема
Часто бывает, что при удалении записи из таблицы необходимо что-то проделать с подчинёнными записями – удалить их, переназначить другой записи, убрать информацию о подчинении. Механизм, описанный ниже, позволит вам решать такие проблемы. Допустим, у вас есть таблица Employees и таблица дефектов – Defects, а одна из записей первой таблицы должна быть удалена. Отсюда дилемма – что делать с подчинёнными записями таблицы Defects: удалить их, оставить без подчинения или переназначить другой записи? Проблема становится непростой, если есть многоуровневые отношения. Что же делать? Читайте дальше.
Предлагаемая план-схема действий.
- Пользователь хочет удалить некую запись.
- Вытаскиваем все зависимые записи (ID и внешние ключи) из БД в DataSet.
- Оценить полученный DataSet на зависимые записи. В простейшем сценарии приложение может информировать пользователя о них и ограничить удаление. Или может просить подтверждение удаления/переназначения этих записей.
- Сохранить изменения в БД.
1. Пользователь хочет удалить некую запись.
Желательно заблокировать запись, чтобы только один пользователь мог с ней работать.
2. Вытаскиваем все зависимые записи.
Вытаскиваем все зависимые записи (ID и внешние ключи) для того, чтобы принять
решение о том, что делать с этими записями. Для этого существуетспециальная
функция, которая возвращает подчинённые записи из разных таблиц.
public DataSet GetRelatedTables(SqlConnection con, string strTableName, string strFieldName ,int iID); |
strTableName – имя таблицы, которой принадлежит запись.
strFieldName – имя ключевого поля.
iID – id записи, для которой вы хотите вытащить зависимые записи.
Таблицы организованы так, что первыми идут самые «дальние» таблицы, последней идёт главная таблица.
Итак, если вы хотите удалить запись из таблицы Employee с id 12, то можете написать так:
DataSet _ds=GetRelatedTables(con, "employees","ID",12); |
3. Оценка полученного DataSet
if (_ds.Tables["Defects"].Rows.Count>0 ) { … } |
Если есть несколько подчинённых записей, то можно пойти такими путями:
foreach (System.Data.DataRow _row in _ds.Tables["Defects"].Rows) { _row.Delete(); } |
3. Подчинённые записи переназначаются на другую запись путём изменения значения внешнего ключа.
int _iID; _iID = ChooseNewResposibleEmploee(); foreach (System.Data.DataRow _row in _ds.Tables["Defects"].Rows) { _row[“EmployeeID”]= _iID; //Другой Employee } |
4. Сохранить изменения в БД.
Если удаление не было отменено, то обновлённый набор данных DataSet должен быть отослан для внесения изменений в БД.
DataAdapter.Update(_ds); |
Вот и всё.
Время кода
Отображение
превью изображения перед загрузкой его на сервер
ЯЗЫК: C#
АВТОР: Siddharth Ray, http://www.codeproject.com/
ПЕРЕВОД: Чужа В.Ф ака hDrummer
Есть простой способ использования функциональности превью на ваших веб-страницах. Идея состоит в том, чтобы иметь на странице некую область для предосмотра, в которой пользователь может увидеть изображение перед отправкой его на сервер.Функция ShowPreview() в приведенном ниже коде покажет привью в тэге <img> и сохранит данные из поля file объекта <FORM>. Этот способ может быть легко расширен для поддержки большей функциональности. Фактически можно использовать отдельное окно для отображения превью изображения.
Веб-форма с функцией на JavaScript
<%@ Page Language="vb" Codebehind="WebForm2.aspx.vb"
Inherits="Match.WebForm2"%> <HTML> <HEAD> <script language=javascript> function isGraphics(filename) { var i=filename.length; // get file length i=filename.lastIndexOf('.')+1; // find extension var ext=filename.substr(i); // pull out extension switch(ext.toLowerCase()) { case "gif": // GIF case "jpg": // JPG case "jpeg": // JPG return true; break; default: return false; } } function setImage(file) { var image=document.getElementById("Preview"); if(file.value.length) if(isGraphics(file.value)) if(image.src!=file.value) image.src=file.value; } </script> <title>Preview</title> </HEAD> <body MS_POSITIONING="GridLayout"> <form id="Form1" method="post" runat="server"> <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0"> <TR></TABLE></form></body></HTML> |
{К содержанию}
Форумы .Net - вопросы оставшиеся без ответа
Проблема
с подключением БД VC++ и ADO.NET
Как
правильно использовать fill (oracle & NET)
Crystal
reports!
компонент
с поддержкой транзакций
про
вызов dts package из asp.net
Linux.Mozila.JS
- особенности ...ного программирования - кто подскажет...
Проблема
при запросе данных и таблицы
Ещё
раз про DLL
accessibility
of ClassView
Аппликативное
нахождения портов и IP адресов
Как
правильно задать код символа из Charmap ?
На этом тридцать шестой выпуск .Net Собеседника закончен.
До следующего номера.
Чужа Виталий Ф. aka hDrummer, MCAD, MCDBA, MCP
hdrummer@sql.ru - жду ваши предложения и замечания.
http://subscribe.ru/
http://subscribe.ru/feedback/ |
Подписан адрес: Код этой рассылки: comp.soft.prog.dotnetgrains |
Отписаться |
В избранное | ||