【问题标题】:How to choose columns from a query and display in datagrid如何从查询中选择列并在数据网格中显示
【发布时间】:2016-06-23 11:24:40
【问题描述】:

我想使用复选框和 Display in datagrid 从查询中选择列。下图是程序的概览:

App screenshot

并使用此代码进行搜索:

Database1Entities DBE = new Database1Entities();
var search = from c in DBE.Tbl_PersonalInformation
                     where
                     string.IsNullOrEmpty(textBoxFirstName.Text) || (textBoxFirstName.Text) == (c.First_Name)
                     &&
                     string.IsNullOrEmpty(textBoxLastName.Text) || (textBoxLastName.Text) == (c.Last_Name)
                     select new { c.First_Name, c.Last_Name };
        dataGrid.ItemsSource = search.ToList();

例如,如果 checkBoxFirstName.IsChecked==truecheckBoxLastName.IsChecked==false 只有 FirstName 会显示在数据网格上。

【问题讨论】:

标签: c# wpf linq datagrid entity-framework-6


【解决方案1】:

你可以传递一个过滤方法

public object FilterMethod(Person person)
{
var condition = false; // checkBoxFirstName.IsChecked==true
if (condition)
    return new {person.Name};
else
    return new { person.Name, person.SurName};
}

并在选择行中使用它 选择过滤方法(c);

【讨论】:

    【解决方案2】:

    我从您的屏幕截图中假设您使用的是 WinForms 而不是 WPF。 您可以使用:this.yourGridView.Columns["First_Name"].Visible = checkBoxFirstName.IsChecked==true;

    设置 First_Name 列的可见性。

    https://msdn.microsoft.com/en-us/library/0c24a0d7(v=vs.110).aspx

    【讨论】:

    • 如果您使用的是代码隐藏,那么在 WPF 中您会这样做:YourDataGrid.Columns[IndexOftheColumn].Visibility = Visibility.Collapsed;如果您正在使用 MVVM 并希望隐藏视图 XAML 中的列: 其中 firstnameVisibility 属性的类型为 Systems.Windows.Visibility 并将其设置为折叠基于你的复选框值。
    猜你喜欢
    • 2013-03-09
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 2022-08-12
    • 2016-03-29
    • 2016-04-28
    • 2019-12-04
    • 1970-01-01
    相关资源
    最近更新 更多