【问题标题】:Datagrid unexpectedly showing textbox for readonly cellDatagrid 意外显示只读单元格的文本框
【发布时间】:2017-11-10 12:29:49
【问题描述】:

我正在向我 14 年前做的一个 asp.net 项目添加新的网络表单。最初开发于 VS2003,.NetFramework 1.1。我已将该项目改编为 VS2017、.NetFramework 4.5 并且一切正常,除了我想摆脱的这个小错误。

我有一个 datagridview 可以在两个页面上完美运行,但我刚刚添加的第三个页面的行为不同。单击“编辑”(按钮 [01-02]...)后,当该行处于编辑模式时,我单击另一行上的编辑按钮,datagridview 应该只刷新而不做任何事情,我能够继续编辑字段,但现在 datagridview 刷新并在只读字段中给了我一个文本框。再次点击[01-02]按钮,我仍然可以继续编辑数据并成功保存。

我已确保使用的数据集将此列设置为只读。 datagridview 将此列设置为只读。

在我更改了 data-worker-layer-class 并更改了从数据库中填充数据的方式之后,此行为开始了,方法是将数据集复制到临时数据集,该临时数据集已调整为要呈现给用户的数据并返回将该临时数据集添加到 Web 表单的代码隐藏中。我已将 sum 列设置为只读。

关于我正在使用的这个旧网络,我确实知道一些事情:

  • Webform 上的控件不包含在 PlaceHolder 中,因为它在 VS2003 中很麻烦
  • 一些将焦点设置到第一个输入字段的 RegisterStartupScripts 已过时,但它们仍可在其他页面上使用,但我已在此新网页中修复了该问题
  • 事件处理程序 on_click 已调整为使用一个按钮开始编辑和保存数据,并且如果用户单击数据网格中的另一行则不会发生任何事情。

我真的很想避免创建新的解决方案和重新编码...

【问题讨论】:

  • 欢迎来到 SO。请访问stackoverflow.com/help/how-to-ask 并阅读有关如何发布好问题的信息。请在您的问题中添加相关代码,并将图片插入问题中。问题应按原样完整,不应依赖外部图像或代码。请说明代码中哪里出了问题,并向我们展示您为调试问题所做的工作。

标签: c# asp.net datagridview


【解决方案1】:

解决了。首先,我使用的网格是 DataGrid (.net 1.1) 而不是 DataGridView。很抱歉混淆了。

数据绑定后我这样做了:

private void fillTheDataGrid()
{
     DataSet dsData = this.getDataForMyGrid(...); //fetches data from the data-worker-class
     dgMyGrid.DataSource = dsData;
     dgMyGrid.DataBind();
     ((BoundColumn)dgMyGrid.Columns[10]).ReadOnly = true; // (Added this and it worked)
}

【讨论】:

    猜你喜欢
    • 2011-01-30
    • 2013-08-07
    • 2012-08-22
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 2019-01-28
    相关资源
    最近更新 更多