Это картина того, чего я хочу достичь:

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

Есть идеи, как действовать?

Пока что я сделал следующее:

  protected void Page_Load(object sender, EventArgs e)
{
   SqlConnection conn = new SqlConnection(@"Data Source=NASHIISHEENA;Initial Catalog=HousekeepingPortal_DB;Integrated Security=True");
   SqlCommand cmd = new SqlCommand("Select Cat_Name from tblCategory",conn);
   conn.Open();
   SqlDataReader dr = cmd.ExecuteReader();

   GridView1.DataSource = dr;
   GridView1.DataBind();
   conn.Close();
}
0
She 26 Фев 2018 в 00:03

1 ответ

Лучший ответ

Я не могу дать вам полный код того, чего вы пытаетесь достичь, но я дам вам общее представление.

Прежде всего - для создания таблицы вы можете использовать GridView или ListView. Другой вариант - использовать обычный список, а затем создать Grid / DockPanel в качестве DataTemplate для каждого элемента. Я думаю, что это самое простое решение, поэтому я продемонстрирую его.

Я покажу вам, как реализовать это с помощью ListView и поддерживать архитектуру MVVM. Обратите внимание, что вызов события, подобный тому, который вы сделали, не похож на MVVM, и я рекомендую вместо этого использовать Command.

Сначала вам нужно что-то в ViewModel, которое объясняет, какую страницу вы просматриваете в настоящее время, и привязывает ее к фактическому просмотру. Я не знаю точно, что вы хотите, поэтому я не могу показать вам код этой части.

Затем вы создаете Command под названием OpenPageCommand на вашем ListView, который получает свой элемент / страницу / любой объект, который ему нужен, через параметр object.

Что касается части ListBox и привязки команды:

    <ListBox ItemsSource="{Binding Categories}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <DockPanel>
                        <Button DockPanel.Dock="Right" Width="150" Content="Show detalils" 
                                Command="{Binding DataContext.OpenCommand, RelativeSource={RelativeSource AncestorType=Window}}" 
                                CommandParameter="{Binding }"/>
                        <TextBlock Text="{Binding Name }"/>
                    </DockPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

Решения с GridView или ListView должны быть аналогичными. Обратите внимание, что в этих случаях вам, вероятно, потребуется использовать CellTemplate, чтобы поместить кнопку в один из столбцов.

Если у вас есть вопросы, просьба сообщить об этом в комментариях.

-1
marc_s 26 Ноя 2019 в 20:08