rajkiran.07 Ответов: 2

Как вручную привязать столбцы datagridview к значениям в универсальном списке C#?


Я работаю над приложением winform, используемый язык - C # и использует sqlserver в качестве бэкэнда. Пользовательский интерфейс моего приложения имеет представление datagrid, которое отображает значения, я разработал и реализовал приложение, используя бизнес-объект, бизнес-уровень, уровень данных, по щелчку Доступ к событию кнопки в значениях пользовательского интерфейса в базе данных осуществляется с помощью запроса выбора, результат передается по уровням, и, наконец, он доступен в пользовательском интерфейсе в виде списка . Я могу привязать список к datagridview с автоматическим созданием, но когда я пытаюсь сделать это вручную, создавая столбцы и назначая значения в списке столбцам, значения не отображаются в представлении datagrid. я прошел через разные ответы и поиск в Google ответа, но, похоже, ничего не работает, конечно, из-за моего невежества, может ли кто-нибудь направить меня ???

Что я уже пробовал:

public class ContactPerson
{
List<contactperson> listCP = new List<contactperson>();

private string id;
public string Id
{
    get { return id; }
    set { id = value; }
}
private string firstName;
public string FirstName
{
    get { return firstName; }
    set { firstName = value; }
}
private string lastName;
public string LastName
{
    get { return lastName; }
    set { lastName = value; }
}
private string mobileNo;
public string MobileNo
{
    get { return mobileNo; }
    set { mobileNo = value; }
}
private string altMobNo1;
public string AltMobNo1
{
    get { return altMobNo1; }
    set { altMobNo1 = value; }
}
private string altMobNo2;
public string AltMobNo2
{
    get { return altMobNo2; }
    set { altMobNo2 = value; }
}
private string emailid;
public string Emailid
{
    get { return emailid; }
    set { emailid = value; }
}
private string offNo;

public string OffNo
{
    get { return offNo; }
    set { offNo = value; }
}

}

private void btnShow_Click(object sender, EventArgs e)
    {

      BULContact obj = new BULContact();

      ////
      ////Autobinding gridview (works)
      ////
      //dgvDisplay.AutoGenerateColumns =true;
      //var listCP = obj.DisplayBUContacts();
      //dgvDisplay.DataSource = listCP;


//This is the piece of code i want to use, which needs some changes..Please guide

      dgvDisplay.AutoGenerateColumns = false;
      var listCP = obj.DisplayBUContacts();
      dgvDisplay.DataSource = listCP;

      dgvDisplay.Columns.Add("FirstNamee", "First Name");
      dgvDisplay.Columns.Add("LastNamee", "Last Name");
      dgvDisplay.Columns.Add("MobiNoDef", "Mob NoDef");
      dgvDisplay.Columns.Add("AltMobiNo1", "AltMob No1");
      dgvDisplay.Columns.Add("AltMobiNo2", "AltMob No2");
      dgvDisplay.Columns.Add("OfficeeNo", "Office No");
      dgvDisplay.Columns.Add("EmaillID", "Email ID");

      foreach (var item in listCP)
      {

        dgvDisplay.Columns["FirstNamee"].DataPropertyName = item.FirstName;
        dgvDisplay.Columns["LastNamee"].DataPropertyName = item.LastName;
        dgvDisplay.Columns["MobiNoDef"].DataPropertyName = item.MobileNo;
        dgvDisplay.Columns["AltMobiNo1"].DataPropertyName = item.AltMobNo1;
        dgvDisplay.Columns["AltMobiNo2"].DataPropertyName = item.AltMobNo2;
        dgvDisplay.Columns["OfficeeNo"].DataPropertyName = item.OffNo;
        dgvDisplay.Columns["EmaillID"].DataPropertyName = item.Emailid;

       
      }

    }

Graeme_Grant

Пожалуйста, поделитесь структурой / кодом общего списка в BULContact.

rajkiran.07

значения присутствуют в списке, проблема заключается в ручной привязке его к datagridview.

Контактное лицо публичного класса
{
List< contactperson> listCP = новый список & lt;contactperson>();

идентификатор частной строки;
открытый идентификатор строки
{
get { return id; }
set { id = значение; }
}
частная строку "имя";
общественного строка имя
{
get { return firstName; }
набор { имя = значение; }
}
частная строку "фамилия";
общественного строка фамилия
{
get { возвращение "фамилия"; }
set { фамилия = значение; }
}
частная строка mobileNo;
публичная строка MobileNo
{
get { return mobileNo; }
set { mobileNo = значение; }
}
частная строка altMobNo1;
общественного строка AltMobNo1
{
get { return altMobNo1; }
set { altMobNo1 = значение; }
}
частная строка altMobNo2;
общественного строка AltMobNo2
{
get { return altMobNo2; }
set { altMobNo2 = значение; }
}
частная строка emailid;
публичная строка Emailid
{
get { return emailid; }
set { emailid = значение; }
}
частная строка offNo;

общественного строка OffNo
{
get { return offNo; }
set { offNo = значение; }
}

Karthik_Mahalingam

в чем проблема автоматической привязки?

rajkiran.07

автоматическая привязка работает отлично. я пытаюсь понять, как это можно сделать вручную.

Karthik_Mahalingam

проверьте мое решение.

rajkiran.07

спасибо, удаление foreach сделало свою работу..

Karthik_Mahalingam

Добро пожаловать

Graeme_Grant

Посмотрите на ссылку, которую я вам предоставил.. Он подробно описывает то, что вы хотите.

rajkiran.07

спасибо.

2 Ответов

Рейтинг:
2

Graeme_Grant

Вот ссылка с ответом для вас: Привязка списка< t> К DataGridView в WinForm

[^]


Рейтинг:
15

Karthik_Mahalingam

обратитесь к этому образцу

private void Form1_Load(object sender, EventArgs e)
       {
           List<Entity> lst = new List<Entity>();
           lst.Add(new Entity() { ID = 1, Name= "aa", Address = "aa-1" });
           lst.Add(new Entity() { ID = 2, Name = "bb", Address = "bb-1" });
           lst.Add(new Entity() { ID = 3, Name = "cc", Address = "cc-1" });

           dataGridView1.AutoGenerateColumns = false;

           dataGridView1.Columns.Add("ID", "ID");
           dataGridView1.Columns.Add("Name", "Name");
           dataGridView1.Columns.Add("Address", "Address");

           dataGridView1.Columns["ID"].DataPropertyName = "ID";
           dataGridView1.Columns["Name"].DataPropertyName = "Name";
           dataGridView1.Columns["Address"].DataPropertyName = "Address";

           dataGridView1.DataSource = lst;



       }
       public class Entity
       {
           public int ID { get; set; }
           public string Name { get; set; }
           public string Address { get; set; }
       }