Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: FoxPro->XML->DotNet->UserControl Добавлено: 20.12.07 12:49  

Автор вопроса:  Shota
Люди, человеки, ТОВАРИЩИ!!! Дочитайте до конца, ПОМОГИТЕ
Ситуация:
В базе данных есть 2 таблицы: DocType и Document
В DocType в одном из полей в формате XML храниться описание типа документа( какие контролы, как расположены, типы данных и т.д.)
В Document в одном из полей хранятся сами данные так же в формате XML созданные на основе XML описания из DocType.
Вот пример для наглядности:

DocType:
<doc_type id=”Document1”>
<control id=”deal_date” DataType=”date” ControlType=”TextMasked” />
<control id=”amount” DataType=”decimal” ControlType=”TextMasked />
<control id=”client_name” DataType=”string” ControlType=”TextBox” />
<control id=”client_address” DataType=”string” ControlType=”TextMemo” />
</doc_type>
Document:
<Document1>
<deal_date>20-dec-2007</deal_date>
<amount>125.22</amount>
<client_name>Karapetyan Ashot</client_name>
<client_address>Yerevan, Armenia</client_address>
</Document1>


“TextMasked”, “TextBox”, “TextMemo” – пользовательские контролы.
Есть также контейнер который на основе XML из DocType создает эти пользовательские контролы, при получении XML из Document заполняет их, после редактирования пользователем возвращает собранный с контролов XML.

На работе это все работает в FoxPro. Я же переписываю это на C#.
В FoxPro есть такая штучка как & ( амперсанд ) назначение следующее: если у меня есть 2 переменные a и b я могу составить строку MyCommand=”a+b” в том месте кода где мне нужно получить сумму двух переменных я использую &MyCommand ( т.е. содержимое строки выполниться как написанный програмный код ). Пользуясь этой возможностью я в таблице DocType определяю значение по умолчанию для моих контролов например:

<control id=”deal_date” DataType=”date” ControlType=”TextMasked” DefaultValue=”CurrentDate” />


где CurrentDate глобальная переменная содержащая текущую дату.
При создании нового документа я назначаю значение по умолчанию следующим образом: deal_date.value = &CurrentDate
Значение DefaultValue может быть и название функции( GetClientCode (), и переменная (CurrentDate), и выражение ( Qty * Price ).
Спасибо за терпение ( если вы дочитали до сих пор )
Так вот ВОПРОС:
Как мне тоже самое реализовать в .NET ( будь то C# или VB.NET без разницы )
Или вот так лучще спросить:
Как заставить выполниться код содержащийся на сервере в «строковом» формате на мащине клиента.
Кстати, может я не правильную стратегию выбрал пытаясь повторить FoxPro-шные штучки в .NET, может есть какое другое решение?


Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Пашок



ICQ: 397605205 

Вопросов: 1
Ответов: 2
 Профиль | | #1 Добавлено: 20.12.07 18:15
& - в NET это кокатенция. Заменить эту щтучку просто так незьзя. Нужно юзать регулярные выражения. И то, смотря в каких пределах ты юзаешь всю эту штучку, какие могут быть варианты (Только арифметика или нечто более нетривиальное По хорошему нужно свести получение данных в одну функцию, например так:

 

Enum DataTypes
Text = 0
Numeric = 1
NumericExpression = 2
'И сколько угодно типов
End Enum
 
Public Function GetData (ByVal DataType As DataTypes) As Object
Select Case datatypw
Case Text
......
Case Numeric
......

End Select
End Function


Ты нашиши на e-mail mailto:pave-borisov@yandex.ru
или в асю, опиши все возможные варианты содержимого контролов и желательно код который есть на VB.NET -- на С# я не программирую.
Я жду!

Ответить

Номер ответа: 2
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #2
Добавлено: 21.12.07 08:23
Фигня какая-то. & - это конкатенация не в .NET, а в VB. В C# этот оператор отсутствует, там для конкатенации строк используется +

Ответить

Номер ответа: 3
Автор ответа:
 Shota



Вопросов: 22
Ответов: 52
 Профиль | | #3 Добавлено: 21.12.07 10:14
У меня весь проект на C#, вечером я попытаюсь переписать "ключевые" так сказать моменты на VB.NET и отправлю тебе на pave-borisov@yandex.ru.
Потому как там нужна не только арифметика а именно нечто более нетривиальное.
Например
1. при выходе из поля PassportNo надо проверить введенное значение в базе данных и если есть такой клиент то ввести остальные данные ( фио, адрес, телефон ...) в соответствующие поля.
2. при вводе нового документа установить КодФилиала в значение глобальной переменной ( которая при старте программы заполняется из базы данных )
и т.д. и т.п.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам