Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么设置datagridview的DataPropertyName即使在设置datasource之后也要执行此任务?_C#_Asp.net_Datagridview - Fatal编程技术网

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中吗?