【问题标题】:how to make cell editable based on other cell value如何根据其他单元格值使单元格可编辑
【发布时间】:2017-11-24 11:20:57
【问题描述】:

我有一个 gridView,我必须根据它旁边的单元格的值来编辑一个单元格。就像如果第二列的单元格具有“AF”值,那么第一列的单元格将变为可编辑。 我使用 CellClick 事件得到了解决方案。但问题是,如果尝试使用键盘向下箭头或 Enter 按钮转到第一列的下一个单元格,我无法使其可编辑。

这是 cellClick 事件的代码,它工作正常。

private void  dgvForecastData_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (GridRowIndex >= 0)
            {
                dgvForecastData.Rows[GridRowIndex].Cells["Forecast or Current Year Actual"].ReadOnly = true;
                string sActForecastIndicator = dgvForecastData.Rows[GridRowIndex].Cells["Actual/Forecast Indicator"].Value.ToString().Trim();
                if (sActForecastIndicator == "F" || sActForecastIndicator == "AF" && !dgvForecastData.Rows[GridRowIndex].Cells["Non recurring"].ReadOnly)
                {
                    dgvForecastData.Rows[GridRowIndex].Cells["Forecast or Current Year Actual"].ReadOnly = false;

                }


            }
        }

请告诉我如何使用键盘(向下箭头并输入)实现上述功能。
我正在使用下面的代码,但它不起作用

private void dgvForecastData_KeyDown(object sender, KeyEventArgs e)
        {
           if (e.KeyData == Keys.Down)
            {
                if (GridRowIndex >= 0)
                {
                    dgvForecastData.Rows[GridRowIndex].Cells["Forecast or Current Year Actual"].ReadOnly = true;
                    string sActForecastIndicator = dgvForecastData.Rows[GridRowIndex].Cells["Actual/Forecast Indicator"].Value.ToString().Trim();
                    if (sActForecastIndicator == "F" || sActForecastIndicator == "AF" && !dgvForecastData.Rows[GridRowIndex].Cells["Non recurring"].ReadOnly)
                    {

                        dgvForecastData.Rows[GridRowIndex].Cells["Forecast or Current Year Actual"].ReadOnly = false;
                    }


                }
            }
        }

【问题讨论】:

    标签: c# asp.net gridview keypress keydown


    【解决方案1】:

    也许使用:e.KeyCode == Keys.Down 会解决它。

    【讨论】:

    • 你确定事件真的被触发了吗?
    • 是的,事件正在触发并进入最后一个 if 条件 -> if (sActForecastIndicator == "F" || sActForecastIndicator == "AF" && !dgvForecastData.Rows[GridRowIndex].Cells[" Non recurring"].ReadOnly。但是当我尝试编辑按下任何数值时,它会再次进入 if (e.KeyData == Keys.Down) 并检查按下了什么键。因此我无法编辑。
    • 请问谁能帮忙??
    【解决方案2】:

    我使用当前行索引而不是 gridrowindex,它现在正在工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-26
      • 2013-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-13
      相关资源
      最近更新 更多