Ответы пользователя GarF1eld - CodeHelper

GarF1eld

GarF1eld
Карма 242
Имя Саша
Возраст 23
Сайт Неизвестно
Twitter Неизвестно
Участвует в проекте 1051 дн., 10 час., 46 мин.
Последняя активность 784 дн., 8 час., 41 мин. назад
О себе ничего не указано

Ответы

Новые Лучшие

Перейти к вопросу →
CultureInfo.CurrentCulture.DateTimeFormat.FullDateTimePattern;

ну или как-то так

Перейти к вопросу →

Вообще если количество строк не фиксировано и нужно использовать один селект, то это интересный вопрос. А если же нет, то можно сформировать динамический запрос и выполнить его, где-то так

-- таблица ключей
DECLARE @keys TABLE(Id INT, Value NVARCHAR(MAX));
INSERT INTO @keys 
VALUES (1, '1'), (2, '2'), (3, '3');

-- таблица значений
DECLARE @values TABLE(Id INT, Value NVARCHAR(MAX));
INSERT INTO @values 
VALUES (1, '1'), (3, '3');

-- работаем через курсор
DECLARE cur CURSOR LOCAL FAST_FORWARD FOR
SELECT k.Value AS [Key],
    v.Value AS [Value]
FROM @keys k
LEFT JOIN @values v
ON k.Id = v.Id;

DECLARE @query NVARCHAR(MAX) = 'SELECT ',
    @key NVARCHAR(MAX),
    @value NVARCHAR(MAX);

OPEN cur;

FETCH NEXT FROM cur
INTO @key, @value;

-- формируем строку запроса
WHILE @@FETCH_STATUS = 0
BEGIN
    SET @query = @query + CASE WHEN @value IS NULL THEN 'NULL' ELSE '''' + @value + '''' END + ' AS [' + @key + ']';

    FETCH NEXT FROM cur
    INTO @key, @value;

    IF  @@FETCH_STATUS = 0 
    	SET @query = @query + ', ';
END;

CLOSE cur;
DEALLOCATE cur;

-- выполняем запрос
EXEC (@query);
Перейти к вопросу →

На самом деле все оказалось довольно логично: Дело в том, что ItemsSource.ItemContainerGenerator.ItemFromContainer производит поиск в своих элементах. Он не знает, что может содержать элементы, также производные от ItemsControl (как TreeViewItem). Поэтому для решения задачи нужно вызывать ItemContainerGenerator.ItemFromContainer у родительского элемента первого уровня.

private void treeView1_PreviewMouseMove(object sender, MouseEventArgs e)
{
  Point mousePos = e.GetPosition(null);
  Vector diff = _DragStart - mousePos;

  if (e.LeftButton == MouseButtonState.Pressed &&
    Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance &&
    Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance)
  {
    TreeView treeView = sender as TreeView;
    TreeViewItem treeViewItem =
      FindAnchestor<TreeViewItem>((DependencyObject)e.OriginalSource);

    if (treeViewItem != null)
    {
      // ищем родительский элемент
      ItemsControl parent = FindParent<ItemsControl>(treeViewItem);

      object item = parent.ItemContainerGenerator.
        ItemFromContainer(treeViewItem);

      if (item is Measure)
      {
        DataObject dragData = new DataObject("Measure", item);
        DragDrop.DoDragDrop(treeViewItem, dragData, DragDropEffects.Move);
      }
    }
  }

И еще один хелпер

private static T FindParent<T>(FrameworkElement current)
      where T : FrameworkElement
    {
        do
        {
            current = VisualTreeHelper.GetParent(current) as FrameworkElement;
            if (current is T)
            {
                return (T)current;
            }
        }
        while (current != null);
        return null;
    }
Перейти к вопросу →

Просто нужно проверять System.Media.RenderCapability. Советую обратить внимание на свойство Tier

Перейти к вопросу →

Взгляни сюда, надеюсь поможет ASP.NET 2.0 and "Validation of ViewState Mac failed" exception.

Еще похоже, проблема возникает из за окончания сессии. попробуй увеличить таймаут

Перейти к вопросу →

Может проще будет навесить на кнопку ?? onclick="this.blur();"

Перейти к вопросу →

установить у грида AutoGenerateColumns в false

Перейти к вопросу →

Отвечаю сам себе

        WSDualHttpBinding binding = new WSDualHttpBinding(WSDualHttpSecurityMode.Message);
        binding.Security.Message.ClientCredentialType = MessageCredentialType.UserName;
        binding.MaxReceivedMessageSize = Int32.MaxValue;

        // ищем cертификат .cer для сервера в TrustedPeople
        X509Certificate2 cert = null;
        X509Store certStore = new X509Store(StoreName.TrustedPeople, StoreLocation.CurrentUser);
        certStore.Open(OpenFlags.ReadOnly);
        for (int i = 0; i < certStore.Certificates.Count; i++)
            if (certStore.Certificates[i].SubjectName.Name == "CN=testsvc")
                cert = certStore.Certificates[i];
        certStore.Close();

        // указываем identity по сертификату
        X509CertificateEndpointIdentity identity = new X509CertificateEndpointIdentity(cert);

        // адрес
        EndpointAddress addr = new EndpointAddress(new Uri("http://localhost:999/ServiceAdmin"),
            identity,
            new AddressHeaderCollection());

        // это коллбек
        _ClientCallback = new ServiceAdminCallback();

        // это клиент
        Client = new ServiceAdminClient(new InstanceContext(_ClientCallback),
            binding,
            addr);

        Client.ClientCredentials.UserName.UserName = _LastUser;
        Client.ClientCredentials.UserName.Password = _LastPassword;

Вот так. И никаких конфигов ;) PS. В этом примере реализовано только шифрование сообщений серверу

Перейти к вопросу →

Если я правильно понял, то лучше вынести интерфейсы в отдельную сборку и использовать версионность. Для каждого нового пакета интерфейсов просто менять версию сборки интерфейсов и реализаций к ним, тогда и старые и новые реализации будут загружать только те версии сборок, с которыми они ладят

Перейти к вопросу →

Я бы все таки отдал предпочтение безопасности типов, т.к если интерфейс обновится, то все сборки использующие его будут уведомлены, что добавлены новые методы. К сожалению со вторым вариантом так не прокатит, компилироваться будет, но очень вероятны ошибки при выполнении из-за несогласования типов параметров. А если все находится в одной сборке, тогда смысл использовать второй вариант?



v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.