我有一个包含编辑和项目模板的gridview。我想要做的是基于其中一列的值,当一行在editmode中时,使两个文本框成为readonly或readwrite。
项目模板由两个图像按钮组成,编辑/删除三个标签(Primary,Secondary和IsSecondary)。编辑模板有两个图像按钮取消/保存,两个文本框(主要和辅助)和一个下拉选择主要或次要)
我想要做的是将两个文本框设置为只读,如果在进入编辑模式时,Dropdown值为Secondary。基本上,当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
不幸的是,无论下拉列表的值如何,都会对文本框进行读写。
关于我还能尝试什么的任何想法?
答案 0 :(得分:0)
IMO您需要使用DataGridView.CellBeginEdit event。 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
如果正在编辑的单元格是包含下拉列表的单元格,您可能也应该忽略该事件。
答案 1 :(得分:0)
谢谢Pasty ......我没有尝试过你的答案,但会看看......我实际上找到了答案......我的测试碰巧是在一个偶数行上,这是一个备用行。所以我的行
If e.Row.RowState = DataControlRowState.Edit Then...
未被触发...将代码更改为
If e.Row.RowState = DataControlRowState.Edit OR e.Row.RowState = DataControlRowState.Alternate + DataControlRowState.Edit Then...
工作得很好......