Рассылка закрыта
При закрытии подписчики были переданы в рассылку "BloggLand и Я | Блоггландия" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
← Сентябрь 2004 → | ||||||
1
|
2
|
3
|
4
|
5
|
||
---|---|---|---|---|---|---|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16
|
17
|
18
|
|
20
|
21
|
22
|
23
|
24
|
25
|
26
|
27
|
28
|
29
|
Статистика
0 за неделю
В двадцать первом выпуске рассылки '.Net Собеседник' вы можете прочесть обзор новых компонент и продуктов, разработанных с использованием платформы .Net, получить ссылки на новые технические статьи из Microsoft Knowledge Base,прочесть первеод статьи 'Используем CodeSmith для ускорения разработки проектов' и узнать как можно скрывать адреса ссылок от посетителей сайта.
Информационный Канал Subscribe.Ru |
.Net Собеседник #21
Содержание- От автора
- Обзор новостей
- Статья выпуска - Используйте Code Smith для ускорения разработки проектов
- Время кода - Прячем ссылки от посетителей сайта
- Форумы .Net на www.sql.ru
От автора
Здравствуйте, коллеги!
Обзор новостей
-
Семинары <Дни разработчика 2004>
Семинары проводятся в сентябре-октябре 2004 года. Приглашаем вас принять участие в бесплатных семинарах <Дни разработчика 2004>, которые состоятся в рамках серии семинаров Microsoft в городах России.
Основные темы семинаров
- Разработка приложений с использованием Visual Basic .NET 2003
- Разработка клиентских приложений с использованием Visual C# 2005 Express
- Создание Интернет-решений с использованием Visual Web Developer 2005 Express и SQL Server 2005 Express
- Будущее разработки систем командами разработчиков с использованием Visual Studio 2005 Team System
- Разработка приложений для мобильных устройств, Tablet PC и встраиваемых систем
-
Вышел .NET 1.0 SP 3, 1.1 SP1
- Выход Windows XP Service Pack 2 затмил выход .NET Framework 1.0 Service Pack 3 и .NET Framework 1.1 Service Pack 1. Также как и релиз XP SP2, эти обновления сфокусированы прежде всего на решении проблем безопасности, но появились также некоторые новые фишки, такие, как улучшенная поддержка WSDL (для 1.1). Ссылки на обновления: .NET Framework 1.0 Service Pack 3, ..NET Framework 1.1 Service Pack 1 for Windows XP, 2000, и/или .NET Framework 1.1 Service Pack 1 for Windows 2003
-
Вышел Nevron Chart для .NET 3.0
- Nevron LLC объявляет о выходе Nevron Chart для .NET 3.0. Компонент отличается множеством видов графиков, поддержкой VS в режиме дизайна, поддержкой незаполненных точек данных, редакторов UI, содержит сетку данных, встроенную панель инструментов, содержит финансовые функции, поддержку серверов БД. Доступна пробная версия.
-
Вышел Nevron Diagram Windows Forms
3.0
- Nevron LLC объявила о выходе Nevron Diagram для WinForms 3.0. Компонент имеет улучшенные возможности по отображению диаграмм и графиков и позволяет выполнять множество различных визуализаций, имеет массу настроек.
-
Вышел компонент поддержки
кредитных карт .netCHARGE 4.0
- В .netCHARGE 4.0 добавлена поддержка Winforms, новые шлюзы, включая Esecpayments, OptimalPayments и TrustCommerce и т.п. Теперь поддерживает более 40 процессоров и шлюзов.
-
THBImage - компонент для
обработки изображений для VB.NET,C#,VB,ASP,C++,MSAccess
- THBImage Professional 4.5 теперь поставляется с поддержкой таких форматов, как EXR,FPX,JBIG,PCT,DCM,DCX. Доступны новые функции обработки изображений - AutoContrast, AutoLevels, AdaptiveThreshold. Примеры теперь содержат скрипты на ASP демонстрирующие работу с изображениями на стороне сервера.
-
Новая версия Aurora
Validation .NET 1.1
- Dawning Technology выпустила новую версию Aurora Validation .NET, содержащую функции в стиле Excel для облегчения создания слоя проверки данных в ваших приложениях .NET.
-
Atalasoft
выпустила DotAnnotate, набор инструментов для аннотаций документов для
платформы Microsoft .NET Framework
- Atalasoft Inc. объявила о выходе Atalasoft DotAnnotate, 100% управляемого компонента для .NET Windows Form, добавляющего мощные инструменты для создания аннотаций в документе. Позволяет рисовать объекты на изображениях или документах.
- How to use the Int32.Parse method to convert the string representation of a hexadecimal integer to a decimal integer by using Visual C# .NET
- FIX: You receive the "System.InvalidOperationException" error message when you drag a window over a form that contains a DataGrid object
- FIX: You receive the "Duplicate declaration of member 'location'" error message in Visual Studio .NET 2002
- How to obtain the installation state of Visual Studio .NET programmatically
- How To Use OLE DB DBTYPE_VARNUMERIC
- How To Reuse ADO Connections Within MTS Transactions
- How to use the AllowPartiallyTrustedCallers attribute to call an assembly that has a strong name from a Web page by using Visual C# .NET
- How to bind data to a user control by using Visual C# .NET
Статья выпуска
Используйте Code Smith для ускорения разработки проектов
ЯЗЫК: C#, ASP.Net
Автор статьи: Shivprasad Koirala http://www.csharphelp.com/
Код к статье :
Демонстрационный проект
РЕЗЮМЕ
Вступление
. В этом руководстве в основном будет показано, как
закодировать повторяющийся код на c#.
Скачивание и установка
http://www.ericjsmith.net/
- скачать можно по этой ссылке, установка проста и не требует комментариев.
После неё инструмент виден в vc# IDE в меню Tools. Версия: это руководство
предназначено для версии 2.5.
Как начать
Исправляем редактор
1) Первым делом нужно решить, какой редактор будет использоваться с
CodeSmith. Geckt установки зайдём в CodeSmith Explorer. Затем нажмём на кнопку
<%@ CodeTemplate Language="C#" TargetLanguage="Text" Description="Hello Word"
%>
Эта строка указывает какой язык использовать и содержит краткое
описание имени шаблона. Эта строка является директивой и не оказывает никакого
влияния на шаблон.
Следующей строкой будет строка "Hello word".
Время кодирования закончилось, теперь надо скомпилировать проект. Щёлкнув
правой кнопкой по HelloWorld.cst и нажав на Еxecute, мы получим следующее
сообщение:
---------------- Compile started -----------------
Build complete -- 0 errors, 0 warnings
---------------------- Done ----------------------
Build succeeded
Для просмотра выводимой информации нажмите Generate... Теперь можно попить
кофе...
3) Входящие параметры для шаблонов: А теперь, после нашей программы
, давайте напишем код, принимающий некую строку и отображающий её
10 раз. Итак, щёлкнем правой кнопкой мыши и добавим новый файл-шаблон на c# -
display.cst. Первым делом добавим директиву
<%@ CodeTemplate Language="C#" TargetLanguage="Text" Description="This
accepts input and displays the output 10 times" %>
Затем укажем переменную, через которую будет осуществляться ввод:
<%@ Property Name="AcceptMessage" Type="System.String" Description="The
message to display 10 times" %>
И потом уже идёт нормальный код на c# для отображения сообщения:
<% int pintcount;
for (pintcount=0;pintcount<10;pintcount++)
{%>
<%=AcceptMessage%>
<%}%>
Теперь покажем весь код:
<%@ CodeTemplate Language="C#"
TargetLanguage="Text" Description="This accepts input and displays the output
10 times" %>
<%@ Property Name="AcceptMessage" Type="System.String" Description="The
message to display 10 times" %>
<% int pintcount;
for (pintcount=0;pintcount<10;pintcount++)
{%>
<%=AcceptMessage%>
<%}%>
Заметьте, что способ отображения AcceptMessage похож на
классический подход, знакомый ещё по asp. Теперь кликнем правой кнопкой и
выполним шаблон. Введём некоторое значение и увидим сгенерированное 10 раз
сообщение.
4) Написание простого комопонета: Теперь мы знаем, каким образом можно
выполнить отображение, как параметры могут быть помещены в шаблон CodeSmith.
Теперь займёмся более практически полезной реализацией. Одной из скучнейших
вещей в ООП является создание классов со свояствами определённого типа, да ещё
и с соблюдением соглашений наименования. Особенно это касается проектов,
работающих с базами данных. На этом примере мы рассмотрм детально каким образом
создать свояства set/get для таблицы СУБД. Мы будеи использовать Sql server,
популярную СУБД Northwind, таблицу Employee. Создадим шаблон letgettemplate.cst
в нашей папке.
Вот его декларации:
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ CodeTemplate Language="C#" Src="CSLAHelper.cs" Inherits="CSLAHelper"
TargetLanguage="C#" Description="Generates a Basic Class of let and get
properties" %>
<%@ Property Name="DevelopersName" Type="String" Description="This is needed
to tell Who has developed" %>
<%@ Property Name="CodedOnWhichdate" Type="String" Description="Says when
the developer has coded" %>
Синтаксис во многом похож на тот, который мы имеем в .Net. Но
основная декларация - codetemplate."CSAHelper.cs", который имеет много функций,
которые мы будем использовать. Я думаю, СodeSmith обладает большинством
необходимых функций - все они содержатся в "CSAHelper.cs".Вы найдёте этот файл
по пути "С:\Program Files\CodeSmith\v2.5\Samples\CSLA.NET\C#\". Для дальнейшего
продолжения работы скопируйте пожалуйста этот файл в каталог "Learn Code
Smith". Таким образом, мы указываем файл, который мы будем использовать, в
вышеназванной директиве. Можно также написать свои классы, поместить их в файл
и указать их в свойстве CodeTemplate. В следующих двух свойствах просто
хранятся данные о разработчиках и дате разработки. Теперь далее.
<ColumnSchemaCollection NPKs = RootTable.NonPrimaryKeyColumns;>
Здесь мы определяем переменную NPKs типа ColumnSchemaCollection. Эта переменная
будет содержать все столбцы коллеции. Заметьте, что она объявлена в файле
CSLAHelper.cs и вся реализация также размещена в этом файле. Можно просто
открыть его в блокноте и узнать все подробности реализации. Теперь посмотрим,
что у нас содержится в переменной:
using System;
// Coded by <%=DevelopersName %> on <%=CodedOnWhichdate%>
namespace <%=ClassNamespace%>
{
public class Cls<%=ObjectName%>
{
private const string ClassName="Cls<%=ObjectName%>";
<% foreach(ColumnSchema col in NPKs) { %>
<%= GetMemberVariableDeclarationStatement(col, "",true) %>
<%}%>
private Cls<%=ObjectName%>Db mobjCls<%=ObjectName%>Db;
<% foreach(ColumnSchema col in NPKs) {string propertyName =
GetPropertyName(col);%>
public <%=GetCSVariableType(col)%>
<%=GetCamelCaseName(propertyName)%>
{
get
{
return <%=GetMemberVariableName(col,"")%>;
}
set
{ <%=GetMemberVariableName(col,"")%> = value; }
}
<%}%>
public Cls<%=ObjectName%>()
{}
}}
Я знаю, что приведённый выше код тяжел для понимания, но вывод
соответствует ожидаемому нами, этот код приведен ниже. Заметьте, что
<%=CodedOnWhichdate%> заменен датой 1/1/2004. Также и
<%=DevelopersName %> заменилось на Shivprasad Koirala (так меня зовут) и
т.д. Функция GetCSVariableType даёт нам соответствие между типами данных в c# и
SQL Server'ом. Я имею ввиду то, что nvarchar стал типом string в c#. Функция
GetMemberVariableName возвращает имя столбца.
using System; // Coded by Shivprasad Koirala on 1/1/2004
namespace NameSpaceEmployee
{
public class ClsEmployee
{
private const string ClassName="ClsEmployee";
private string _lastName;
private string _firstName;
private ClsEmployeeDb mobjClsEmployeeDb;
public string lastName
{
get
{
return _lastName;
}
set
{
_lastName = value;
}
}
public string firstName
{
get
{
return _firstName;
}
set
{
_firstName = value;
}
}
} }
А вот и полный код -
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ CodeTemplate Language="C#" Src="CSLAHelper.cs" Inherits="CSLAHelper"
TargetLanguage="C#" Description="Generates a Basic Class of let and get
properties" %>
<%@ Property Name="DevelopersName" Type="String" Description="This is needed
to tell Who has developed" %>
<%@ Property Name="CodedOnWhichdate" Type="String" Description="Says when
the developer has coded" %>
<% ColumnSchemaCollection NPKs = RootTable.NonPrimaryKeyColumns; %>
using System;
// Coded by <%=DevelopersName %> on <%=CodedOnWhichdate%>
namespace <%=ClassNamespace%>
{
public class Cls<%=ObjectName%>
{
private const stringClassName="Cls<%=ObjectName%>";
<% foreach(ColumnSchema col in NPKs) { %>
<%= GetMemberVariableDeclarationStatement(col, "",true) %>
<%}%>
private Cls<%=ObjectName%>Db mobjCls<%=ObjectName%>Db;
<% foreach(ColumnSchema col in NPKs) {string propertyName =
GetPropertyName(col);%>
public <%=GetCSVariableType(col)%>
<%=GetCamelCaseName(propertyName)%>
{
get
{
return <%=GetMemberVariableName(col,"")%>;
}
set
{
<%=GetMemberVariableName(col,"")%> = value;
}
}
<%}%>
public Cls<%=ObjectName%>()
{
}
}
}
После запуска кода в CodeSmith, вам надо будет заполнить несколько свойств -
имя пространства имён, выбрать таблицу, имя объекта, дату создания, имя
программиста, и нажать . Это 20 % вашей работы.
Напоследок:Если вы поработаете с другими шаблонами в
CodeSmith, то наверняка догадаетесь, каким образом их можно использовать с
пользой. Я использую CodeSmith от изготовления GUI, бизнес-объектов(set/get) и
до написания хранимых процедур в БД. Это действительно уменьщает время
разработки процентов на 30%... А также автоматически соблюдаются соглашения по
наименованию. Также в архив я поместил т.н. fulltemplate.cst, который
представляет из себя расширенную версию вышеприведенного. Но мои стандарты
кодирования отличаются от ваших. Так что fulltemplate.cst может быть потребует
вашего вмешательства, хотя для меня он и так годится. Не забудьте
скачать исходники примеров
Вот и всё, удачного программирования!
Время кода
Прячем ссылки от
посетителей сайта
ЯЗЫК: C#
АВТОР: Bipin Joshi http://www.dotnetbips.com/
Код к статье : -
ПЕРЕВОД: Чужа В.Ф ака hDrummer
Вступление
Если вы подведёте курсор мыши к ссылке в браузере, то адрес, ей
соответствующий, будет показан в статусной строке браузера. Как у вебмастера
или разработчика этого сайта, у вас может появиться желание скрыть адрес
ссылки, размещённой на вашей странице. Такая необходимость возникает на
страницах, предназначенных для скачивания софта или разного рода оплат. В этом
небольшом примере мы используем элемент управления ASP.NET HyperLink для
отображения ссылок и затем напишем код для сокрытия их реальных адресов от
посетителей сайта.
Код
Для примера предположим, что у нас есть элемент управления
HyperLink с именем HyperLink1 на нашей веб-форме. После рендеринга этого
контрола в браузере м получаем его в сконвертированном виде как тэг . Для того,
чтобы скрыть URL от конечного пользователя, нам необходимо обрабатывать три
события на стороне клиента:
-
OnMouseOver
-
OnMouseMove
-
OnContextMenu
Вы можете удивиться - зачем же нам нужно обрабатывать третье событие? Дело в
том, что это событие возникает тогда, когда пользователь щёлкает правой кнопкой
мыши по ссылке; таким образом, использовав пункт меню "Copy Shortcut"
(<Копировать ссылку>), можно узнать её реальный адрес, чего бы нам и не
хотелось. Заметьте, что всё это клиентские события и нам необходимо написать
код на JavaScript для их обработки. Таким образом, с нашей задачей мы можем
справиться в два этапа:
-
В коде на стороне сервера прицепить события на стороне клиента и функции, их
обрабатывающие
-
Написать функцию, работающую на стороне клиента для обработки событий
Присоединение событий и обработчика событий
Для того, чтобы существовала возможность присоединить клиентское событие и его
обработчик, ASP.NET поддерживает коллекцию Attributes. Используется она так:
HyperLink1.Attributes.Add("onmouseover","HideLink();");
HyperLink1.Attributes.Add("onmousemove","HideLink();");
HyperLink1.Attributes.Add("oncontextmenu","return false;");
Здесь мы указываем, что событие OnMouseOver будет обрабатываться функцие
HideLink(). В событии OnContextMenu мы просто возвратим false, что сработает
так, как будто событие и не происходило.
Функция на стороне клиента
А вот и функция на JavaScript, которая делает нужную нам работу
function HideLink()
{
window.status="You do not see the link here!";
}
Здесь мы устанавливаем текст строки состояния браузра в некий свой текст. И
всё.
Итог
В этой маленькой статье мы увидели, каким образом можно спрятать
адрес ссылки с помощью элементов управления ASP.NET и JavaScript.
{К содержанию}
Форумы .Net на SQL.RU - вопросы оставшиеся без ответа
Кто-нибудь
юзал Reflection?
ASP
+ Stored Procedures
Дизайнер
студии не отображает "внутренности" custom control'а
http://www.sql.ru/forum/actualthread.aspx?tid=120050
Как
задать начальную страницу календарю
Шифрование
передаваемых данных
Кто-нибудь
имел опыт работы с BackgroundWorker
ActiveX
в WinForm Control
Обнаружение
и закрытие окон по фрагменту заголовка
Как
заставить DataGrid при Scroll выделять строку
XmlDataType
из DataColumn
CallContext
или что-то в этом роде для вызова функции вопрос?
На этом двадцать первый выпуск .Net Собеседника закончен.
До следующего номера.
Чужа Виталий Ф. aka hDrummer,
hdrummer@sql.ru - жду ваши
предложения, вопросы и замечания.
http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.dotnetgrains
Отписаться
В избранное | ||