WPF正在加载仅包含所需信息的数据网格
本文关键字:信息 数据 数据网 网格 包含所 加载 WPF | 更新日期: 2023-09-27 18:24:41
我有一个DataGrid,它显示加载的数据。现在我的问题是,我不想将所有信息显示到DataGrid中。e.i用户ID、密码和Gander。我只知道使用Gridview,在那里我可以手动添加我想要的列,而不是通过编码。请帮帮我。
//method that save to d grid
public static List<ObjectUser> GetListAllUsers()
{
List<ObjectUser> oUserList = new List<ObjectUser>();
try
{
SqlConnection oConnection = new SqlConnection(_ConnectionString);
SqlCommand oCOmmand = new SqlCommand();
oCOmmand.Connection = oConnection;
DataSet oDs = new DataSet();
oCOmmand.CommandText = @"select u.* , c.Company
from UserEnrollment u
inner join [dbo].[Company] c on u.CompanyID = c.CompanyID";
SqlDataAdapter Adapter = new SqlDataAdapter(oCOmmand.CommandText, oCOmmand.Connection);
Adapter.Fill(oDs);
if (oDs.Tables[0].Rows.Count > 0)
{
foreach (DataRow dr in oDs.Tables[0].Rows)
{
ObjectUser oGet = new ObjectUser();
oGet.UserID = Convert.ToInt32(dr["UserID"].ToString());
oGet.UserName = dr["UserName"].ToString();
oGet.Password = dr["Password"].ToString();
oGet.FullNames = dr["FullNames"].ToString();
oGet.Surname = dr["Surname"].ToString();
oGet.Email = dr["EmailAddress"].ToString();
oGet.GenderID = Convert.ToInt32(dr["GenderID"].ToString());
oGet.CompanyName = dr["Company"].ToString();
oUserList.Add(oGet);
}
}
-
创建一个包含数据网格隐藏列的属性,如下所示。
string[]arr=新string[2]{"第1列","第2列"};
-
现在在自动生成列事件中使用上面的arr,如代码所示
您可以使用数据网格的自动生成列事件来实现上述功能。
你可以根据你的要求使用以下任何一个代码
案例1:如果您有不想显示的列列表,那么您可以在数据网格的自动生成列事件中使用以下代码
if(e != null)
{
if(arr.Contains(e.Column.Header))
{
e.Cancel = true;
//Here if you want to just hide the column and wants to generate the column
// e.Column.Visibility= Visibility.Collapsed;
}
}
案例2:如果您有想要显示的列列表,那么您可以在数据网格的自动生成列事件中使用以下代码
string[] VisibleColumns = //Here populate string array with list of columns you want to show
if (e != null)
{
if (!VisibleColumns.Contains(e.Column.Header))
{
e.Cancel = true;
}
}
只需在设置datagridview的数据源后隐藏不想显示的列:
myDataGridView.Columns["UserID"].Visible = false;
myDataGridView.Columns["Password"].Visible = false;
myDataGridView.Columns["GenderID"].Visible = false;