WPF仅使用所需信息加载数据网格

时间:2014-09-26 09:37:47

标签: c# wpfdatagrid

我有一个显示已加载数据的DataGrid。现在我的问题是,我不想将所有信息显示到DataGrid中。 e.i UserID,密码和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);
                }

            }

2 个答案:

答案 0 :(得分:0)

  1. 创建一个属性,为您的数据网格保留隐藏列。

    string [] arr = new string [2] {&#34; Column1&#34;,&#34; Column2&#34;};

  2. 现在在自动生成列事件中使用上面的arr,如代码所示

  3. 您可以使用datagrid的AutogeneratingColumns事件来实现上述功能。

    您可以根据自己的要求使用以下任何一种代码

    案例1:如果您有不希望显示的列列表,则可以在datagrid的自动生成列事件中使用以下代码

        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:如果您有要显示的列的列表,那么您可以在datagrid的自动生成列事件中使用以下代码

        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;
            }
        }
    

答案 1 :(得分:0)

在设置datagridview的数据源后,只需隐藏您不想显示的列:

myDataGridView.Columns["UserID"].Visible = false;
myDataGridView.Columns["Password"].Visible = false;
myDataGridView.Columns["GenderID"].Visible = false;