Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.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标记值为空_C#_.net_Winforms_Datagridview_Datagridviewcheckboxcell - Fatal编程技术网

C# 行的DataGridView标记值为空

C# 行的DataGridView标记值为空,c#,.net,winforms,datagridview,datagridviewcheckboxcell,C#,.net,Winforms,Datagridview,Datagridviewcheckboxcell,我在表单上有2个DataGridView控件。两者的列数和类型相同。1个文本框列和2个复选框列。 问题是第一个DataGridView工作正常,但另一个工作不正常。两者都有相同的绑定方法和数据源。同一表单上的第二个DataGridView的问题是 未设置复选框值 尝试检索值时,currentrow.Tag值为null 下面是我用来绑定DataGridView和设置复选框值的代码 public void BindGridView(DataGridView gv) { var

我在表单上有2个DataGridView控件。两者的列数和类型相同。1个文本框列和2个复选框列。 问题是第一个DataGridView工作正常,但另一个工作不正常。两者都有相同的绑定方法和数据源。同一表单上的第二个DataGridView的问题是

未设置复选框值

尝试检索值时,currentrow.Tag值为null

下面是我用来绑定DataGridView和设置复选框值的代码

public void BindGridView(DataGridView gv)
    {
        var actuallist = UserOperations.GetPermissions(RoleId, (int)(Enumerations.ModuleType.Basic));
        Common.Common.StyleGridView(gv);
        gv.AutoGenerateColumns = false;

        gv.Columns["ModuleName"].DataPropertyName = "ModuleName";

        gv.DataSource = actuallist;

        int j = 0;
        foreach (DataGridViewRow row in gv.Rows)
        {
            row.Tag = actuallist[j++].ModuleId;
        }
        int k = 0;
        bool r = false;
        foreach (DataGridViewRow row in gv.Rows)
        {
            r = actuallist[k++].PermissionGranted;
            if (r)
                ((DataGridViewCheckBoxCell)row.Cells[1]).Value = r;
            else
                ((DataGridViewCheckBoxCell)row.Cells[2]).Value = !r;
        }
    }

 private void gvPermissions_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        if (gvPermissions.Columns[e.ColumnIndex].Name == "Granted")
        {
            bool isChecked = (bool)gvPermissions[e.ColumnIndex, e.RowIndex].EditedFormattedValue;
            gvPermissions.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = !isChecked;
            gvPermissions.Rows[e.RowIndex].Cells[e.ColumnIndex + 1].Value = isChecked;
            gvPermissions.EndEdit();
        }

        if (gvPermissions.Columns[e.ColumnIndex].Name == "Denied")
        {
            bool isChecked = (bool)gvPermissions[e.ColumnIndex, e.RowIndex].EditedFormattedValue;
            gvPermissions.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = !isChecked;
            gvPermissions.Rows[e.RowIndex].Cells[e.ColumnIndex - 1].Value = isChecked;
            gvPermissions.EndEdit();
        }
    }

单步执行代码。。还有什么是r=实际值[k++];应该代表。。?它应该增加吗?@DJKRAZE permissiongrated是bool。它来自列表,该列表也用作DataGridview的数据源。根据该值,下一部分确定应选中哪个复选框行。您是否可以尝试在切换参数的情况下调用BindGridView方法,以便DGV2与DGV1的参数绑定?另外:gvu CellClick是否用于编辑单元格?