нечетный .net код нужен C # версии - PullRequest
0 голосов
/ 26 ноября 2010

Эран Бецалель написал небольшой класс расширения для DataGrid, все говорят, что это здорово. Но я не могу понять, какой язык он использует и как заставить его работать в Silverlight C # .net 3.5.

Вот класс, который он написал 12 месяцев назад:

public final class DataGridEx extends DataGrid{ 
    public var maintainScrollAfterDataBind:Boolean = true; 

    public function DataGridEx() 
    { 
            super(); 
    }                

    override public function set dataProvider(value:Object):void { 
            var lastVerticalScrollPosition:int = this.verticalScrollPosition; 
            var lastHorizontalScrollPosition:int = this.horizontalScrollPosition; 

    super.dataProvider = value; 

    if(maintainScrollAfterDataBind) { 
            this.verticalScrollPosition = lastVerticalScrollPosition; 
            this.horizontalScrollPosition = lastHorizontalScrollPosition; 
    } 

}

Мне кажется, что он переопределил свойство, которое, как я вижу, невозможно в .net.

Спасибо за все ваши замечания ниже, я добавлю некоторые дополнительные детали (очень жаль за задержку с возвращением к этому, но я лежал в постели в течение 4 дней, галлюцинируя лихорадкой!).

У меня есть Silverlight Datagrid, который привязан к данным вызова службы WCF, сетка имеет две кнопки в каждой строке сетки, одна для открытия станции, другая для закрытия станции, остальные данные в строке информация о пользователе.

Когда пользователь нажимает кнопку «Открыть» или «Закрыть» в определенной строке, я обновляю сводный раздел на странице вверху, а также обновляю данные в базе данных; в этот момент сетка нуждается в обновлении, чтобы пользователь не терял фокус на том, на какую строку он щелкнул.

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

Есть вероятность, что я смогу обновить данные непосредственно в сетке, но это сложно, потому что, хотя он открыт / закрыт, в нем есть другая логика, которая превращает его в решение с 4 состояниями. Однако я мог бы переместить эту логику из сервиса в silverlight, если бы это был мой единственный вариант, хотя это не было бы предпочтительным.

Действительно очень ценю вашу помощь в этом. Рич.

Ответы [ 3 ]

0 голосов
/ 29 ноября 2010

Вы можете установить свойство браузера scrollTo с помощью JavaScript, чтобы оно прокручивалось обратно до верхней части таблицы.

Редактировать:Ой, нет, вам нужно найти способ Silverlight сделать это.Однако не должно быть слишком сложно, просто перейдите к верхней части таблицы.Я не знаю о Silverlight, но в VB.NET есть событие (OnAfter) DataBind, которое вы можете использовать.

0 голосов
/ 29 ноября 2010

Код Эрана - это ActionScript (ECMAScript, такой как javascript), который расширяет объект в рамках Adobe Flex framework / api.

Код скомпилирован в SWF и в конечном итоге будет запущен в Adobe Flashplayer.

Silverlight - это ответ Microsoft на Adobe Flash.

Итак, подведем итог, то, что вы опубликовали, не является "нечетным .net кодом". Это не код .net. ОП от Эрана даже не помечен как код .net.

Чтобы "заставить это работать" в Silverlight, вам, вероятно, потребуется написать компилятор для компиляции ActionScript и Flex API для C # / Silverlight.

Но это не ваш вопрос.

Какой у вас вопрос? Что именно вы пытаетесь достичь в Silverlight?

0 голосов
/ 26 ноября 2010

Используется язык Eran Betzalel ActionScript .В этом случае Eran использует его для улучшения сетки данных, предоставляемой Flex , SDK, который используется для создания многофункциональных интернет-приложений на основе Adobe Flash .

. Silverlight - это платформа Microsoft для создания интернет-приложений.Приложения Silverlight обычно написаны на C # или VB.Net.К сожалению, кроме косметического сходства, нет никакой связи между сеткой данных Flex и сеткой данных Silverlight , поскольку они публикуются разными поставщиками.

Это означает, что реализации этих двух сетей данныхне будет иметь ничего общего.В результате код, который вы разместили , не имеет прямого эквивалента в Silverlight # .

Из вашего вопроса неясно, чего вы пытаетесь достичь.Если вы объясните, что вы пытаетесь сделать, я уверен, что кто-то опытный в Silverlight сможет вам помочь.

...