【问题标题】:ASP.NET Grid EditingASP.NET 网格编辑
【发布时间】:2011-07-15 06:18:27
【问题描述】:

我有一个关于 ASP.NET 中 Telerik RadGrid 的查询。

我有一个绑定到 Telerik RadGrid 的基本列表(BusinessObject) 我启用了 AutoGenerateEditColumn = True 和 AllowAutomaticUpdates。

为什么从我的 Grid 的静态绑定列表中更改记录似乎如此困难。

有一个 Grid_UpdateCommand 事件处理程序允许我通过 e.Items 访问更改的行,但我必须将其转换为 GridEditableItem 而不是我的 BusinessObject 这只是 asp.NET 吗?因为记录只在内存中,所以我希望更改值并让网格反映该值。该任务的教程似乎很复杂。我本人是 WPF 人员,发现在 WPF 中执行此操作很容易,但 ASP.NET 或 Telerik Grid 不能简单地更改静态记录的值或将 DataItem 转换为我的自定义业务对象,这似乎很疯狂。

请帮忙

克里斯

【问题讨论】:

    标签: asp.net data-binding grid telerik


    【解决方案1】:

    e.Item 是对网格行的引用,而不是对业务对象的引用。数据绑定行由 GridDataItem 类表示,编辑行由 GridEditableItem 类表示。您可以通过以下方式访问您绑定的课程:

    var obj = ((GridEditableItem)e.Item).DataItem as BusinessObject;
    

    只要你用数据反弹网格,这将起作用。

    HTH。

    【讨论】:

    • 优秀。感谢布赖恩的快速回复。 A+++
    • 实际上 DataItem 返回一个奇怪的空值。我将网格绑定到对我的根业务类和来自会话变量的页面初始化的公共引用的列表属性。你会建议我做什么?
    • 当引用行的项目时,它可能是以下几种情况之一:它是处理每一行的事件的标题行,反弹时数据尚不可用(例如itemcreated 事件)。我们进入 ItemDataBound 并且 DataItem 属性总是被赋予值。列表不应该是好的。确保对数据的行处理在 ItemDataBound 中。否则,请给我有关代码的更多详细信息。
    • 我试图访问 UpdateCommand 上的 DataItem 属性,我现在理解它不会返回值。只有 ItemDataBound 会解析此属性的值。我将尝试通过蛮力访问该值并使用 UniqueColumn 标题值来解决网格的新更改,以便我可以迭代或使用 LinQ 表达式来更新绑定对象中的项目。我没有看到任何其他方式。
    • 在 silverlight/wpf 中执行此操作非常容易,因为当您在网格中编辑记录时,有事件处理程序可以很容易地返回更改的值并使用它来更新绑定源在处理一些自定义业务逻辑之后。
    猜你喜欢
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 2011-04-30
    • 2016-08-09
    • 1970-01-01
    相关资源
    最近更新 更多