Сообщения

Сообщения за ноябрь, 2009

Silverlight: Общие типы / объекты между двумя WCF - сервисами побыстрому.

Задача: между двумя сервисами передавать общий объект одного класса (типа) на стороне клиента. Т.е. Silverlight получает кастомный объект из одного сервиса, обрабатывает его и передает в другой сервис/ы. Чтоб сделать так, вынесите общий тип в общий проект. Этот проект должен быт Silverlight class library. Мне даже не пришлось выкидывать конфликтующие с полным .NET Framework сборки при добавлении референса на общий Silverlight проект в проект Web-сайта. Видимо, это будет работать пока не испольуются какие-либо сложные типы, например List<ЧтоТо>. Оказалось в WCF задача решается, как и в обычных Web-сервисах ASP.NET – через внешнюю сборку, на которую ссылаются оба проекта - и клиент и сервис. Но есть еще проблема с INotifyPropertyChanged. Нельзя создать общий проект / сборку содержащую класс, наследованный от INotifyPropertyChanged, потому что этот интерфейс определен в сборке System для Silverlight, но не для полного .NET Framework. Вот такая ошибка получается при этом: The type &#

Silverlight: В TreeView в XAML нельзя помещать вперемешку TreeViewItem и другие элементы.

Unhandled Error in Silverlight Application Code: 1001 Category: ParserError Message: AG_E_UNKNOWN_ERROR File: Line: 123 Position: 321 Если в TreeView или в TreeViewItem поместить в разметке вперемешку TreeViewItem и другие элементы, то при установке item.IsExpanded = true; получите выше приведенное исключение. Обнаружено в Silverlight 3 Toolkit October 2009

ASP.NET: Приложение сервера недоступно

Текст ошибки: Приложение сервера недоступно Web-приложение, к которому вы пытаетесь обратиться на этом веб-сервере, в данный момент недоступно.  Нажмите кнопку "Обновить" в своем веб-обозревателе для повтора запроса. Замечание администратора: Сообщение об ошибке, подробно поясняющее причину сбоя данного конкретного запроса, находится в журнале событий приложений на веб-сервере. Ознакомьтесь с этой записью в журнале и выясните причину ошибки. Одна из причин: В папке в которой находяться файлы сайта нет прав для запуска ASP.NET. Например для Widows XP для сайта разработки достаточно добавить на папку сайта учетку ASP.NET, но она есть только в Win XP, поэтому чтоб не запоминать, сделайте права на папку сайта такие же, как в папке сайтов IIS по умолчанию. Это C:\Inetpub\wwwroot. Даже если ваша папка сайта (приложения) лежит в C:\Inetpub\wwwroot, то всеравно проверте на ней права, тк они могут отстутствовать, например из-за выгрузки папки сайта целиком из SVN. Характерн

Linq: Метод var res = (Linq Expression).ToDictionary(p => p.ID) неработает с анонимными типами полученными в select выражения Linq.

Вот это работать будет var res = (from item in SomeList     select new SomeClass()         {             ID = item.Id,         } ).ToDictionary<SomeClass, Int64>(p => p.ID); А вот это нет var res = (from item in SomeList     select new         {             ID = item.Id,         } ).ToDictionary(p => p.ID); Чтоб это обойти нужно просто исопльзовать ToDictionary, принимающий два делегата Func, а не однин. Например: var res = (from item in SomeList     select new         {             ID = item.Id,         } ).ToDictionary(p => p.ID, p=>p); Первый делегат вернет ключь, второй значение для словаря.

Silverlight: Улучшенный TreeView с CheckBox. Добавил детальное представление и фильтрацию элементов для детального представления - TreeView Using CheckBoxes improvement

Есть в Silverlight Toolkit пример Using CheckBoxes in a TreeView – Использование чекбоксов в дереве. Я его срочно доработал :). Посмотреть готовый припер вы можете сразу по этой ссылке Check Hierarhy Perfect Скачать проект здесь . В Silverlight есть TreeView в котором вставлены CheckBox. Изменение этих CheckBox связано как вверх по иерархии, так и вниз. Как это работает в Toolkit можно посмотреть здесь (внимание, долго грузиться, тк сразу все примеры из Toolkit) . Я чуть-чуть доработал это приер и вот что мне удалось туда добавить работа с детальным представление и чтоб в изменения в детальном представлении изменяли отображение самого TreeView Избавиться от обработчика события клика по элементу дерева Дабавил возможность разделения элементов между деревом и детальным представлением. Например у структуре организации у вас есть подразделения и сотрудники и вы хотите в дереве отобаржать только подразделения, а в детальном DataGrid или другом TreeView сотрудников. Ну по псякому может

WPF: DataGrid в WPF не поддерживает полноценной работы с валидацией, в отличии от Silverlight DataGrid

На данный момент я не нашел способа программно в UI (!!! а не в бизнес объектах) определить, валидны ли строки или ячейки в DataGrid WPF. Стандартные уловки с LogicalTreeHelper.GetChildren(...) и Validation.GetHasError(...) на теперешнем июльском 2009 DataGrid не работают. А вот разработчики Silverlight Toolkit такого промоха не допустили. Вот и пригодился мой подход с самопальными Validation Groups как у ASP.NET, который я притянул в WPF и о котором писал ранее. Так что, не все так хорошо в датском королевстве :) Но ждем лучшего, т.к. .NET Framework 4 не загорами.

Microsoft Web Platform Installer 2.0 у меня как-то криво ставит Silverlight 3

Unable to start debugging. The Silverlight managed debugging package isn't installed Попробуйте переустановить Microsoft® Silverlight™ 3 Tools for Visual Studio 2008 SP1 , только не используйте для этого Web Platform Installer 2.0. И еще, хоть Microsoft® Silverlight™ 3 Tools for Visual Studio 2008 SP1 и не поддерживает Widows Server 2003, но всеравно там работает. У этой проблемы есть и более стандартный ответ, но с ним вам поможет Google.com, который вам скажет, что у вас не установлен Silverlight Developer Runtime. Это одна из частей, как раз вхдящая в Silverlight™ 3 Tools for Visual Studio 2008 SP1. Вообще  корень проблемы в том, что Microsoft Web Platform Installer 2.0 у меня ставит как-то криво, что даже Silverlight на работает.

Silverlight: DataGrid – динамическое добавление колонок в DataGrid с динамическими инменами колонок, с поддержкой DataPager. Должно сработать и для WPF.

Silverlight: DataGrid – динамическое добавление колонок в DataGrid с динамическими инменами колонок, с поддержкой DataPager. Должно сработать и для WPF (возможно при доработке), но для WPF, видимо, лучше использовать в качестве низлежащего объекта данных DataTabel. В Silverlight класс DataTabel не существует. Главное условие – сейчас поддерживается максимально до 20 колонок, но это количество не ограничено, просто фиксированно в коде. Правте код сами, кому надо. Решение удобно использовать для отображения отчетов с неизвестными именами колонок и неизвестным количеством колонок и неизвестным типом данных. Т.к. это для отчетов, то изменения данных не подразумеваются. Решению всеравно, что вы используете, List<> или ObservableCollection<>. Типы данных которые не поддерживаются добавте сами, это просто сделать по аналогии с имеющимся в проекте коде. Сейчас поддерживаются String, Int32, Decimal, Double, DateTime. За целостность данных вы отвечаете сами. Я имел ввиду, что нет про

Silverlight 3: задание Foreground на строке DataGrid не приводить к изменению цвета

Поэтому надо задавать в контенте, например на TextBox. Как кастомизировать DataGrid через код есть в сети, но если что - напишу.

Внимание! Добавление элементов в XAML Resource Dictionary из того же проекта, где расположен сам файл ресурсов

Вы приеняете тему из Silverlight Toolkit или свою тему с помощью ImplicitStyleManager и решили добавить в файл темы свои разработанные элементы, причем файл темы и ваши элементы лежат в одном проекте. ImplicitStyleManager в Silverlight будет рвать в этом случае! Обратите внимание, что автоматически подставляемая XML ссылка на namespace в вашем проекте получается без указания на сборку текущего проекта. Это обычное явление. Вот что вы получите при добавлении XML-референса в файл темы xmlns: customControls="clr-namespace:MyProject.CustomControls" А виноват в том, что рвется недоработанный ImplicitStyleManager . Он не переваривает XML-референсы без указания на сборку. Вот такой он :) themingToolkit: ImplicitStyleManager .ResourceDictionaryUri="Themes/Generic.xaml" Лечиться это легко, в вашем xmlns: добавте assembly=MyProjectAssemblyName В результате вы получите: xmlns: customControls="clr-namespace:MyProject.CustomControls ; assembly=MyProjectAssemblyName &quo

Типизированные DataSet - труд коту под хвост. С ADO.NET EntityFramework веселее, но она не поддерживает хранимые процедуры (сейчас)

Изображение
Очередной раз сижу и злюсь на себя, что связался с типизированными DataSet! С ними только на собеседованиях пыль в глаза пускать. Только ADO.NET, чистый ADO.NET и ничего большего в серьезном проекте! Прям как в книгах заговорил :) . У меня немного поменялась схема в базе данных и какие-то типизированные датасеты слетели полностью, какие-то вылетают в рунтайме из-за того, что поле ID не может быть NULL, и т.д. и т.п., и т.д. и т.п. Как это достало! Вот, в одном проекте сделал все на ADO.NET и ADO.NET Entity Framework немного, так мило дело теперь маштабировать (изменять, дорабатывать, наращивать) при случае. Теперь сижу и сверяю настройки датасетов из старой версии проекта который поднял из системы контроля версий. ADO.NET Entity Framework конечно поприятнее, но по сути это работа над ошибками в DataSet’s, а еще эта сладость не поддерживает импорт хранимых процедур в код приложения. Разработчики говорят, что им не хватило времени на это. Можно только импортить как Select, Update, Ins

Версионность на уровне базы начиная с MS SQL 2008 в релизе Enterprise

Коллеги, в MS SQL 2008, в самом дорогом релизе Enterprise есть версионность на уровне базы данных. Она поддерживает администрирование, авто-удаление и другие полезные фичи. Т.к. версионность доступна только с редакции Enterprice, то можно сказать, что никакой версионности в MS SQL 2008 нет :), но все-таки. Система отслеживания измененных данных Система отслеживания измененных данных регистрирует действия по вставке, обновлению и удалению, применяемые к таблицам SQL Server, сохраняя подробности операций изменения в легко обрабатываемом реляционном формате. Таблицы изменений, используемые системой отслеживания измененных данных, содержат столбцы, отражающие структуру столбцов отслеживаемой исходной таблицы, а также метаданные, необходимые для понимания того, какие изменения произошли. Система отслеживания изменений в данных доступна только в следующих выпусках: Enterprise, Developer и Evaluation SQL Server. Работает это все прозрачно и асинхронно не внося изменения в схему базы д