我是C#的新手,我正尝试用数据库中的数据填充我的datagridview并在某些列上进行分组。
例如:
我有一个datagridview,其中包含:字段,全名和worker_id。
我想从数据库中获取数据并根据字段名称对其进行分组。
public void FillFullSchedule()
{
using (SqlConnection sqlcon = new SqlConnection(con))
{
sqlcon.Open();
SqlCommand cmd = new SqlCommand("dbo.FullScheduleData", sqlcon);
//SqlDataReader reader = cmd.ExecuteReader();
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
fullScheduleDG.Rows.Clear();
foreach (DataRow dr in dt.Rows)
{
int n = fullScheduleDG.Rows.Add();
fullScheduleDG.Rows[n].Cells[0].Value = dr[1].ToString();
fullScheduleDG.Rows[n].Cells[1].Value = dr[0].ToString();
fullScheduleDG.Rows[n].Cells[2].Value = dr[2].ToString();
}
}
}
没问题。
我有用于对这篇文章中的数据进行分组的代码:
https://stackoverflow.com/a/44807088/10534001
但是我不知道如何使用它。我该怎么办 ??我不知道下一步。
是将事件添加到单元格格式还是类似的内容?
答案 0 :(得分:0)
使用您需要的3个字段和一个BindingList构建一个类,以将数据填充到DataGrid中。
public class yourClassName
{
public string field { get; set; }
public string fullname { get; set; }
public int worker_id { get; set; }
}
public class yourMainClass
{
public BindingList<yourClassName> yourDataForGrid { get; }
public yourMainClass(//this is a constructor. your params go here)
{
yourDataForGrid = GetDataForGrid(//your params here)
}
}
在您的加载方法中,创建一个新对象并绑定字段:
yourClassName tempThing;
dgNameOfYourDataGrid.DataSource = new BindingSource(tempThing.yourDataForGrid, null);
创建在加载BindingList的构造函数中调用的方法:
public static BindingList<yourClassName> GetDataForGrid(//your params here)
{
BindingList<yourClassName> tempList = new BindingList<yourClassName>();
//your sql code to build a dataset goes here
//foreach row in your dataset
{
yourClassName row = new yourClassName();
row.field = //insert value for field
row.fullname = //insert value for fullname
row.worker_id = //insert value for worker_id
tempList.Add(row);
}
}