我有一个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...
没问题…