Сохранение выбранного переключателя в сетке данных wpf обратно в удаленную базу данных - PullRequest
0 голосов
/ 04 августа 2011

Вопросы согласны полностью согласны не согласны категорически не согласны

Ques1 ооооQues2 ооооQues3 оооо
:::

o представляет радиокнопкуКаждому вопросу были предоставлены 4 переключателя для выбора

Привет всем,

У меня есть таблица данных в приложении wpf, как указано выше в шаблоне выше. Я получаю все вопросы из удаленной базы данных через веб-метод.

Я использую приведенный ниже код xaml для переключателей:

<Grid.Resources>
        <DataTemplate x:Key="AgreeTemplate" >
            <RadioButton GroupName="{Binding Path=question}" IsChecked="{Binding Agree, Mode=TwoWay}" Background="Purple" Height="30" />
        </DataTemplate>
        <DataTemplate x:Key="StronglyAgreeTemplate" >
            <RadioButton GroupName="{Binding Path=question}" IsChecked="{Binding StroglyAgree, Mode=TwoWay}" Background="Purple" Height="30" />
        </DataTemplate>
        <DataTemplate x:Key="DisagreeTemplate" >
            <RadioButton GroupName="{Binding Path=question}" IsChecked="{Binding Disagree, Mode=TwoWay}" Background="Purple" Height="30" />
        </DataTemplate>
        <DataTemplate x:Key="StronglyDisagreeTemplate" >
            <RadioButton GroupName="{Binding Path=question}" IsChecked="{Binding StronglyDisagree, Mode=TwoWay}" Background="Purple" Height="30" />
        </DataTemplate>
    </Grid.Resources>


<DataGrid Name="dataGridFeedback" AutoGenerateColumns="False" Canvas.Left="9" Canvas.Top="6" Height="613" Width="1523" FontFamily="Comic Sans MS" FontSize="20" CanUserAddRows="false" CanUserDeleteRows="False" GridLinesVisibility="All" HeadersVisibility="All" AlternatingRowBackground="BlanchedAlmond" RowDetailsVisibilityMode="Visible" CanUserResizeColumns="False" CanUserResizeRows="False" CanUserSortColumns="False">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Questions" Width="800" IsReadOnly="True" Binding="{Binding Path=question}" />
                    <DataGridTemplateColumn Header="Agree" Width="180" IsReadOnly="True" CellTemplate="{StaticResource AgreeTemplate}" />
                    <DataGridTemplateColumn Header="Strongly Agree" Width="180" IsReadOnly="True" CellTemplate="{StaticResource StronglyAgreeTemplate}" />
                    <DataGridTemplateColumn Header="Disagree" Width="180" IsReadOnly="True" CellTemplate="{StaticResource DisagreeTemplate}" />
                    <DataGridTemplateColumn Header="Strongly Disagree" Width="180" IsReadOnly="True" CellTemplate="{StaticResource StronglyDisagreeTemplate}" />
                </DataGrid.Columns>
            </DataGrid>

Однако все переключатели имели одинаковое имя группы как [GroupName = "{Binding Path = question} "], как я могу узнать, какой ответ был выбран пользователем?

Еще один вопрос - это правильно использовать для определения всех этих переключателей?Есть ли какое-либо свойство строки таблицы данных, которое будет использоваться в wpf datagrid?

Наконец, как я могу сохранить выбранную радиокнопку для каждого вопроса обратно в удаленной базе данных?

Пожалуйста, помогите мне. Заранее спасибо.

1 Ответ

0 голосов
/ 04 августа 2011

Плохая идея. Если у вас есть 4 переключателя на один вопрос, нужно проверить только один переключатель, поэтому объем информации в ответе равен целочисленному значению 0..3. Даже если бы у вас было 256 кнопок на вопрос, вам потребовался бы только 1 байт для хранения в базе данных. Таким образом, для хранения ответа на вопрос вам понадобится только одно целое число - число только отмеченных переключателей, только одна кнопка на вопрос.

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

В связи с этим я предлагаю вам изучить и проанализировать применимость следующих архитектурных шаблонов (http://en.wikipedia.org/wiki/Architectural_pattern_(computer_science)[^]):

MVVM — Model View View Model,
http://en.wikipedia.org/wiki/Model_View_ViewModel[^],

MVC — Model-View-Controller,
http://en.wikipedia.org/wiki/Model-view-controller[^]),

MVA — Model-View-Adapter,
http://en.wikipedia.org/wiki/Model–view–adapter[^],

MVP — Model-View-Presenter,
http://en.wikipedia.org/wiki/Model-view-presenter[^].

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...