【问题标题】:Setting a Datagrid Column to read only during run time在运行时将 Datagrid 列设置为只读
【发布时间】:2015-07-03 09:50:18
【问题描述】:

我有一个数据网格,而不是一个数据网格视图,我想让一个列只读,如果单选按钮被选中或没有。

所以我从 sql 查询中动态定义列:

Dim bool_col As New FormattableBoolColumn 
bool_col.HeaderText = "Bool Colunm"
bool_col.MappingName = "bool_col"

表单上还有两个单选按钮,我们称它们为 A 和 B。
当 A 被选中时,我想将 bool_col 设置为只读是真的。 当 B 被选中时,我想将 bool_col 设置为只读是 false。

如果还需要什么,请告诉我。我正在使用 Click 事件,但我不知道如何在 Datagrid 中找到该列并将其设置为只读。整个下午都在尝试这样做,并搜索了我能想到的所有东西,但没有运气。 不幸的是,我无法将其更改为 datagridview。项目的时间和金钱限制禁止这样做。

提前致谢!

【问题讨论】:

    标签: vb.net windows visual-studio-2010 datagrid


    【解决方案1】:

    当你创建列时,你可以添加一个检查:

    bool_col.ReadOnly = RadioButtonA.Checked
    

    因此,如果选中 A,则该列的只读属性将为 true,如果未选中 A,则为 false。

    现在假设您的单选按钮在一个组中,因此一次只能检查两个单选按钮中的一个。

    如果单选按钮不在组中,则使用:

    If RadioButtonA.Checked Then
    bool_col.ReadOnly = true
    else if RadioButtonB.Checked Then
    bool_col.ReadOnly = false
    End If
    

    【讨论】:

    • 谢谢,但这似乎只在创建时有效。如果我想在表单运行时执行此操作怎么办。 A 或 B 可以在运行时更改,我想根据该更改将列设置为只读或不只读。
    • 您可以将单选按钮的 oncheckchanged 事件与 auto postback =true 一起使用
    • 对不起,我没有使用 ASP,只是 windows 中的一个 VB 表单。我想我在 vb.net 中添加了错误的标签。似乎回发不存在。很抱歉造成混乱。
    • 为了工作,您必须重新创建单选按钮的网格 oncheckchanged 事件。这个概念是一样的,你只需要以不同的方式处理它。基本上,您必须在任何时候检查该控件时告诉表单重新创建网格。如果其中包含大量数据或附加控件,这将很快成为内存消耗。
    猜你喜欢
    • 1970-01-01
    • 2012-08-22
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多