当gridviewrow处于编辑模式时,我使用哪个事件来更改控件



我有一个gridview与编辑和项目模板。我想做的是,当一行处于编辑模式时,根据其中一列的值,使两个文本框只读或读写。

Item模板由两个图像按钮编辑/删除三个标签(Primary, Secondary和IsSecondary)组成。编辑模板有两个图像按钮取消/保存,两个文本框(主要和次要)和一个下拉选择主要或次要)

我想做的是将两个文本框设置为只读,如果进入编辑模式下拉值是次要的。基本上,当Value为Secondary时,用户只能切换到Primary,但不能编辑文本框中的值。如果值是Primary,他们可以编辑这些值。

我尝试将以下内容添加到RowDataBound事件

If e.Row.RowState = DataControlRowState.Edit Then
    If ddl_IsSecondary.SelectedValue = 1
        tb_Primary.ReadOnly = True
        tb_Secondary.Readonly = True
    Else
        tb_Primary.ReadOnly = False
        tb_Secondary.Readonly = False
    End If
End If

不幸的是,无论下拉框的值是多少,文本框都是可读的。

你知道我还可以尝试什么吗?

我认为你需要使用DataGridView。CellBeginEdit事件。MSDN州:

当选定单元格的编辑模式启动时发生。

Private Sub DataGridView1_CellBeginEdit(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles DataGridView1.CellBeginEdit
    ' Check your ddl_IsSecondary here and act accordingly.
End Sub

如果正在编辑的单元格是包含下拉列表的单元格,则可能还应该忽略该事件。

Thanks Pasty…我还没有试过你的答案,但我会看看的……我终于找到了答案……我的测试碰巧是在偶数行,也就是备用行。所以我的行

If e.Row.RowState = DataControlRowState.Edit Then...

未被触发…将代码更改为

If e.Row.RowState = DataControlRowState.Edit OR e.Row.RowState = DataControlRowState.Alternate + DataControlRowState.Edit Then...

没问题…

最新更新