从代码隐藏 asp.net 对象数据源更新

本文关键字:对象 数据源 更新 net asp 代码 隐藏 | 更新日期: 2023-09-27 18:34:56

我有一个 ASP.NET 应用程序,在一个页面上有一个网格视图,它使用ObjectDataSource调用位于另一个名为"Device"的类中的方法。那么,这个类返回一个特殊的数据表。这是有效的。

现在我需要一种更新数据的方法,为此我无法使用类 Device,因此我想从代码隐藏中使用该网格的"RowUpdating"方法。我什至为此方法编写了代码,如果用户单击网格中的"更新"按钮,它正在工作并且该方法会触发。

现在进入问题。因为我正在使用 ObjectDataSource,并且我在该网格中有一个 Update-命令,所以我还需要为此 ObjectDataSource 指定和 Update-method,这就是重点。我想使用我的代码隐藏中的 RowUpdating-方法,而不是来自该 ObjectDataSource 的更新方法。我当前的解决方案是"设备"类中的一种方法,它只是通过"返回"命令返回,因此我背后的代码中的 RowUpdate 正在完成这项工作......但这不能是"它如何运作的唯一方式"。

帮助和进一步的提示将不胜感激。谢谢!

从代码隐藏 asp.net 对象数据源更新

如果使用ObjectDataSource,则必须在一个类中编写更新和选择方法。也许必须直接为该 GridView 编写一个类,以将更新并选择方法委托给其他对象。

我认为这对您有用:

[DataObject(true)]
public class SomeService
{
    private Device d;
    private YourUpdaterClass yuc;
    public SomeService()
    {
        this.d = new Device();
        this.yuc = new YourUpdaterClass();
    }
    [DataObjectMethod(DataObjectMethodType.Select, true)]
    public List<YourType> Select()
    {
        return d.YourSelectMethod();
    }
    [DataObjectMethod(DataObjectMethodType.Update, true)]
    public void Update(YourType yt)
    {
        yuc.YourUpdateMethod(yt);
    }
}

和对象数据源:

<asp:ObjectDataSource 
   ID="ObjectDataSource1"
   runat="server" 
   SelectMethod="Select"
   TypeName="SomeService"
   DataObjectTypeName="YourType"
   UpdateMethod="Update">
</asp:ObjectDataSource>