Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Генерирование контролов из XML


Автор: Telsystems 18.8.2013, 22:26
Добрый день. Есть XML 

Код

<NewDataSet>
<OrganizationProperties>
    <OrganizationID>2118</OrganizationID>
    <FieldName>XMLTemplate</FieldName>

<FieldValue>
<billers  Col1Name="Key" Col2Name="Value">
    <MethodsList>
        <Method Name="строка вызова" type="Concatenate" ReadOnly="true" FieldName="@GMProp" Delimiter=""/>
    </MethodsList>
    <FieldsList>
        <Field label="ServiceId" Visible="false" Value="4"/>
        <Field label="@Prop" Visible="false" Value="msisdn=38" MethodName="строка вызова"/>
        <Field label="Телефон" Type="Целое число" IsObligatory="true" Value="050" MethodName="строка вызова" Stored="F1" Long="10"/>
        <Field label="ФИО" Type="ФИО" Stored="F2"/>
        <Field label="@GMProp" ReadOnly="true" Visible="false"/>
        <Field label="Сумма пополнения" Type="Дробное число" IsObligatory="true" Summable="true" Long="10,2"/>
        <Field label="@доп" ReadOnly="true" Visible="false" Value="; " MethodName="строка вызова"/>
    </FieldsList>
</billers>
</FieldValue>
<FieldOwner>true</FieldOwner>
    </OrganizationProperties>
  </NewDataSet>



В <FieldsList> находятся список полей, которые должны отобразиться на форме, а именно

Код

<Field label="Телефон" Type="Целое число" IsObligatory="true" Value="050" MethodName="строка вызова" Stored="F1" Long="10"/>


Должен бить TextBox с именем "Телефон", Text должен быть "050" и не превышать 10 симфолов.

и

Код

<Field label="Сумма пополнения" Type="Дробное число" IsObligatory="true" Summable="true" Long="10,2"/>


Тоже TextBox с именем "Сумма пополнения"

Вопрос :

Есть ли какие-то паресеры, или как можно правильно сделать реализацию такого задания?

Спасибо.

Автор: Cheloveck 18.8.2013, 22:30
Прочитать XML-ку руками -- как два пальца...
А вообще, задача уже реализована в http://www.devexpress.com/Products/NET/Application_Framework/.

Автор: Telsystems 18.8.2013, 22:40
Цитата(Cheloveck @ 18.8.2013,  22:30)
Прочитать XML-ку руками -- как два пальца...
А вообще, задача уже реализована в http://www.devexpress.com/Products/NET/Application_Framework/.

да, но проблема в том, что контролы могут быть разные и разное количество. 
Я думал есть более простой способ, кроме как вручную парсить XML и подбирать контрол.
Например, как задать программно, что
Код

<Field label="Телефон" Type="Целое число" IsObligatory="true" Value="050" MethodName="строка вызова" Stored="F1" Long="10"/>

это TextBox ? 
DevExpress - не вариант, он платный.

Автор: Cheloveck 18.8.2013, 23:34
Цитата(Telsystems @  18.8.2013,  23:40 Найти цитируемый пост)
Например, как задать программно, что
    
<Field label="Телефон" Type="Целое число" IsObligatory="true" Value="050" MethodName="строка вызова" Stored="F1" Long="10"/>

это TextBox ? 


Чудес не бывает.
Код

switch(type) {
case "Целое число":
    return new TextBox(...);
...
}


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)