【问题标题】:DataGridView column bound to a read-only field must have ReadOnly set to True绑定到只读字段的 DataGridView 列必须将 ReadOnly 设置为 True
【发布时间】:2012-12-05 15:46:11
【问题描述】:

我知道这个问题必须有一个简单的解决方案,但我似乎错过了答案。 我有一个 Visual Studio 2008 Winforms 应用程序,我在其中创建了一个 datagridview 来向用户显示数据。在 datagridview 我允许用户编辑信息。其中一个单元格设置为只读,用户希望现在能够编辑此信息。当我进入 datagridview 设计器将单元格设置为 Readonly = False 时,不会保存更改。不管我做什么改变都不会被保存。我现在正在考虑使用以下代码在运行时更改它:

当我使用该代码时,我得到了标题中提到的错误。在我看来,我现在陷入困境......我无法使用 Visual Studio 设计器将单元格更改为 readonly = false。我无法在运行时将单元格设置为 readonly = false。

问题:我做错了什么?还有什么我可以做的吗?对于多个用户来说,这是一个相当大的应用程序,这是大多数用户提出的请求。

任何帮助将不胜感激。

Dim oDL As New MTN.BusinessLayer.MasterTables()
Dim dt As DataTable = oDL.GetTheItems() DataGridView1.DataSource = dt

【问题讨论】:

  • 没有源代码很难说是哪里出了问题!

标签: vb.net winforms


【解决方案1】:

你试过了吗? (设置属性):

AllowUserToAddRows = False
AllowUserToDeleteRows = False
ReadOnly = True

【讨论】:

  • 是的,但它不起作用。网格有三列。其中两个是文本框,一列是复选框列。我可以修改文本框列,但不能修改 CheckBox 列。由于某种原因,当我用鼠标单击它时它不会被选中。
  • 老兄你要提供源代码,更容易给你正确答案!
  • 之前在 SO 论坛上讨论过类似的问题,请查看:HERE!!
  • code Dim oDL As New MTN.BusinessLayer.MasterTables() Dim dt As DataTable = oDL.GetTheItems() DataGridView1.DataSource = dt
  • DataTable 有三列 -ItemCode (string) -ItemName (string) -Selected (boolean) 由于某种原因我无法选中或取消选中选中的(复选框)列,但我能够编辑 ItemCode 和 ItemName 列
【解决方案2】:

您实际上可以为 DataTable 列设置 ReadOnly 属性!

Dim dt As DataTable = oDL.GetTheItems()
dt.Columns("Selected").ReadOnly = false
DataGridView1.DataSource = dt

【讨论】:

    【解决方案3】:

    首先设置 DataTable 只读属性 False 然后设置 Gridview ReadOnly popety false

    EX-

    DataTable dt=("Select * prom priceList");
     dt.Columns["Rate"].ReadOnly = false;
    
    DataGrid View dgv=.dataSource=dt;
     dgv.Columns["Rate"].ReadOnly = false;
    

    【讨论】:

    • 请突出显示代码,以便更清楚地回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 2023-04-03
    • 1970-01-01
    • 2010-09-25
    • 2014-07-28
    • 1970-01-01
    相关资源
    最近更新 更多