2015-07-31 3 views
0

Я создаю WindowsForms приложение, которое использует список лиц, с 4-х параметров (ID, имя, фамилия, права):
Как показать только часть текста в CheckedListBox

public List<Osoba> ListaOsoba() 
     { 
      Osoba nr1 = new Osoba(1, "Name", "Surname", Permissions.Administrator); 
      Osoba nr2 = new Osoba(2, "Name2", "Surname2", Permissions.Użytkownik); 
      Osoba nr3 = new Osoba(3, "Name3", "Surname3", Permissions.Użytkownik); 
      listaOsób.Add(nr1); 
      listaOsób.Add(nr2); 
      listaOsób.Add(nr3); 

      return listaOsób; 
     } 

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

Любая помощь будет оценена по достоинству.

ответ

0

Чтобы связать только имя и фамилию checkedboxlist имя магазина и фамилию вместе, а затем попробовать это:

NameS = "Name" + "Surname"; 

((ListBox)checkedListBox).DataSource = listaOsób; 
((ListBox)checkedListBox).DisplayMember = "NameS"; 
1
public static bool CheckBoxListPopulate(CheckBoxList CbList, IList<T> liSource, string TextFiled, string ValueField) 
    { 
     try 
     { 

      CbList.Items.Clear(); 
      if (liSource.Count > 0) 
      { 
       CbList.DataSource = liSource; 
       CbList.DataTextField = TextFiled; 
       CbList.DataValueField = ValueField; 
       CbList.DataBind(); 
       return true; 
      } 
      else { return false; } 
     } 
     catch (Exception ex) 
     { throw ex; } 
     finally 
     { 

     } 
    } 
  1. здесь Cb список является имя элемента управления и
  2. Элемент списка IList является имя источника списка
  3. Текстовое поле (должно быть контактирование) = "Имя" + "Фамилия"
  4. Поле значения будет быть Hidden это может быть «1,2,3»

так только текст поле будет видно пользователю

0

попробовать это, здесь вы должны сделать произвольные составные свойства для отображения и элемента значения, как DisplayName и HiddenId, а затем вы можете легко связать с checklistbox.

public class Osoba 
{ 
    public int Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public Permissions Permission { get; set; } 
    public string DisplayName { get; set; } 
    public string HiddenId { get; set; } 
    public Osoba() 
    { } 
    public Osoba(int id, string fname, string lname, Permissions p) 
    { 
     Id = id; 
     FirstName = fname; 
     LastName = lname; 
     Permission = p; 
     DisplayName = FirstName + " " + LastName; 
     HiddenId = Id + "_" + Permission.GetHashCode(); 
    } 
    public void ListaOsoba() 
    { 
     List<Osoba> objList = new List<Osoba>(); 
     Osoba nr1 = new Osoba(1, "Name", "Surname", Permissions.Administrator); 
     Osoba nr2 = new Osoba(2, "Name2", "Surname2", Permissions.Uzytkownik); 
     Osoba nr3 = new Osoba(3, "Name3", "Surname3", Permissions.Uzytkownik); 
     objList.Add(nr1); 
     objList.Add(nr2); 
     objList.Add(nr3); 

     ((ListBox)checkedListBox1).DataSource = objList; 
     ((ListBox)checkedListBox1).DisplayMember = "DisplayName"; 
     ((ListBox)checkedListBox1).ValueMember = "HiddenId"; 
     MessageBox.Show(((ListBox)checkedListBox1).Text); 
     MessageBox.Show(((ListBox)checkedListBox1).SelectedValue.ToString()); 

    } 
} 
public enum Permissions 
{ 
    Administrator, 
    Uzytkownik 
} 
0

У меня была аналогичная вещь с SQL. Я возвратил много столбцов, но хотел только показать. Во всяком случае

  ArrayList arr = new ArrayList(); 

      foreach (object o in ListaOsoba) 
      { 
       arr.Items.Add(o[1].ToString()+" "+o[2].ToString()); 
      } 

      foreach (var item in arr) 
      { 
       chkNames.Items.Add(arr.ToString()); //chkNames is your CheckListBox 
      } 

Тогда позже при запросе какой идентификатор и такой идет, где, петля через вас первоначальный список, и посмотреть, кто был отмечен на основе имени и фамилии комбо, найти идентификатор, связанный с этим человеком, и вы должны быть отсортировано