Webforms OnRowDataBound 单元格文本更改导致列显示为只读

Webforms OnRowDataBound cell text change causes columns to appear read-only

首先,我确实尝试手动将 readonly 设置为 false。 我的代码是公司代码,所以我不能在这里分享。我会尽力解释。

在 Webforms 项目中,我的 .aspx 页面有一个 GridView,其中列出了我要显示的所有列。此外,它的每一行都有编辑、删除和更新按钮。三列是日期,从 Oracle 到 asp 的数据转换最终使日期显示为 "MM/DD/YYYY 12:00:00am"。为了去除时间戳,我将 e.Row.Cells[x].Text = e.Row.Cells[x].Text.Split(' ')[0]; 放在 GridView 的 OnRowDataBound 事件中。

在我再次开始测试编辑按钮之前,我认为它工作得很好。当我将行置于编辑模式时,所有包含日期​​和事件的三行现在都是空白的 space。如果我将 OnRowDataBound 中的那三行注释掉,时间戳将重新出现并且行是可编辑的。

首先,我需要让它发挥作用。其次,我很想知道后台实际发生了什么。我对整个 Web 开发还很陌生,对 asp.net 肯定是新手。

如果您在标记中创建列(AutoCreateColumns 被关闭),您可以使用 DataFormatString 来格式化日期列而不是在代码中修改单元格文本:

<asp:BoundField DataField="Date1" DataFormatString="{0:d}" ApplyFormatInEditMode="true" ... />

可以修改格式字符串(在我的示例中为 d)以更好地符合您的偏好。如果日期列是可编辑的,您还可以设置 ApplyFormatInEditMode 如上所示。