2014-09-26 3 views
0

У меня есть DataGrid, который показывает загруженные данные. Теперь моя проблема в том, что я не хочу отображать всю информацию в DataGrid. e.i UserID, Пароль и Gander. Я знаю только это, используя Gridview, где я могу добавить столбцы, которые я хочу вручную, а не с помощью трединга. Пожалуйста, помогите мне.WPF Загрузка datagrid только с необходимой информацией

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

      } 

ответ

0
  1. Создать одно свойство, которое держит Скрытие столбцов для DataGrid, как это.

    string [] arr = новая строка [2] {"Column1", "Column2"};

  2. Теперь используйте выше приб в вашем случае колонке автогенераторного, как показано в коде

Вы можете использовать AutogeneratingColumns событие из DataGrid для достижения выше функциональности.

Вы можете использовать любого из ниже коды согласно вашему требованию

Случая 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; 
     } 
    } 
+0

Hi Ashok, должен я поставить arrarys внутри кнопки USerGrid или он должен быть отделен, это то, что я так и сделал далеко –

+0

будет отдельно. Вы можете сохранить его в своем коде за переменной или свойствами и можете инициализировать его до привязки логики сетки. если этот ответ действительно поможет вам, пожалуйста, отметьте его как ответ. –

+0

Благодарим за помощь. Я немного потерял, поскольку я все еще новичок. я могу скрыть их с помощью индексов, таких как UserGrid.Columns [2] .Visibility = Visibility.Hidden; единственная проблема, с которой я сталкиваюсь, - это только скрытие, когда я нажимаю на сетку. я изменил код, наложил его на загрузку формы и проговорил ошибки; Индекс был вне пределов досягаемости. Должен быть неотрицательным и меньше размера коллекции. –

0

Просто скрыть столбцы, которые вы не хотите, чтобы отобразить после настройки источника данных в DataGridView:

myDataGridView.Columns["UserID"].Visible = false; 
myDataGridView.Columns["Password"].Visible = false; 
myDataGridView.Columns["GenderID"].Visible = false; 
Смежные вопросы