C# 为什么设置datagridview的DataPropertyName即使在设置datasource之后也要执行此任务?
我知道这是一个奇怪的问题,但我不明白为什么我的代码做了我想要的 这就是我如何将数据放入C# 为什么设置datagridview的DataPropertyName即使在设置datasource之后也要执行此任务?,c#,asp.net,datagridview,C#,Asp.net,Datagridview,我知道这是一个奇怪的问题,但我不明白为什么我的代码做了我想要的 这就是我如何将数据放入datagridview using (SqlConnection SqlCon = new SqlConnection(StrCon)) { SqlCon.Open(); using (SqlCommand SqlCmd = new SqlCommand()) { SqlCmd.Connection = SqlCon;
datagridview
using (SqlConnection SqlCon = new SqlConnection(StrCon))
{
SqlCon.Open();
using (SqlCommand SqlCmd = new SqlCommand())
{
SqlCmd.Connection = SqlCon;
SqlCmd.CommandType = CommandType.StoredProcedure;
SqlCmd.CommandText = "SelectWe...";
SqlCmd.Parameters.Add("@HiveNumber", SqlDbType.Int).Value = ...;
SqlCmd.Parameters.Add("@RV", SqlDbType.Int).Direction = ...;
DataTable Dtable = new DataTable();
Dtable.Load(SqlCmd.ExecuteReader());
WeeklyRptdgv.Columns[0].DataPropertyName = "RecID";
WeeklyRptdgv.Columns[2].DataPropertyName = "VisitDate";
WeeklyRptdgv.Columns[3].Name = "QueenExists";
WeeklyRptdgv.Columns[3].DataPropertyName = "QueenExists";
WeeklyRptdgv.Columns[4].Name = "QueenVisited";
WeeklyRptdgv.Columns[4].DataPropertyName = "QueenVisited";
WeeklyRptdgv.Columns[5].Name = "QueenCellVisited";
WeeklyRptdgv.Columns[5].DataPropertyName = "QueenCellVisited";
WeeklyRptdgv.Columns[6].DataPropertyName = "HoneyStatus";
WeeklyRptdgv.Columns[7].DataPropertyName = "EggLayingStatus";
WeeklyRptdgv.DataSource = Dtable;
在这里之前都可以,但是3,4,5的列号是bool,我希望它们显示在复选框中,而不是真/假
因此,我在设置数据源后执行此操作:
using (SqlConnection SqlCon = new SqlConnection(StrCon))
{
SqlCon.Open();
using (SqlCommand SqlCmd = new SqlCommand())
{
...
WeeklyRptdgv.DataSource = Dtable;
WeeklyRptdgv.Columns.Remove("QueenExists");
DataGridViewCheckBoxColumn QueenExists = new DataGridViewCheckBoxColumn();
QueenExists.Name = "QueenExists";
QueenExists.DataPropertyName = "QueenExists";
WeeklyRptdgv.Columns.Insert(3, QueenExists);
WeeklyRptdgv.Columns.Remove("QueenVisited");
DataGridViewCheckBoxColumn QueenVisited = new DataGridViewCheckBoxColumn();
QueenVisited.Name = "QueenVisited";
QueenVisited.DataPropertyName = "QueenVisited";
WeeklyRptdgv.Columns.Insert(4, QueenVisited);
WeeklyRptdgv.Columns.Remove("QueenCellVisited");
DataGridViewCheckBoxColumn QueenCellVisited = new DataGridViewCheckBoxColumn();
QueenCellVisited.Name = "QueenCellVisited";
QueenCellVisited.DataPropertyName = "QueenCellVisited";
WeeklyRptdgv.Columns.Insert(5, QueenCellVisited);
}
}
这段代码实现了我想要的功能,但我无法找到在删除原始列后列是如何获得其值的
或者这个解决方案是错误的,我不知道。我确信您很清楚如何在设计时向datagridview添加列
在设计时添加列时,需要选择适当的列类型,如DataGridViewTextBoxColumn、DataGridViewCheckBoxColumn、DataGridViewButtonColumn等
一旦在设计时在datagridview中正确添加了列,唯一挂起的事情就是为所有列设置DataPropertyName并设置datagridview的DataSource
在设计时添加列时,除了为复选框列选择正确的列类型外,您正在执行所有这些操作。您可以分享您在aspx页面中声明datagridview的方式吗?它是否将AutoGenerateColumn设置为true或false?@ChetanRanpariya我通过代码将其设置为false然后您应该仅在aspx中添加复选框列和其他列,并在其中设置DataPropertyName。在代码隐藏中,只应设置datagridview的数据源。@ChetanRanpariya我不知道如何设置,所以我不得不这样做:(如果我错了,请纠正我……我假设您正在开发web应用程序……您还可以共享数据绑定代码块的编写位置,在form_load中吗?