asp.net ObjectDataSource从代码后面更新

时间:2013-10-11 06:30:19

标签: c# asp.net objectdatasource

我有一个ASP.NET应用程序,在一个页面上有一个gridview,它使用ObjectDataSource来调用位于另一个名为“Device”的类中的方法。那么这个类返回一个speciala数据表。这很有效。

现在我需要一种更新数据的方法,为此我不能使用类Device,所以我想从后面的代码中使用该网格的“RowUpdating”方法。我甚至为这个方法编写了代码,如果用户单击网格中的“更新”按钮,它就会正常工作并触发该方法。

现在问题。因为我正在使用ObjectDataSource,并且我在该网格中有一个Update-command,我还需要为此ObjectDataSource指定和Update-method,这就是重点。 我想使用我后面的代码中的RowUpdating方法,而不是来自ObjectDataSource的更新方法。我目前的解决方案是“设备”类中的一个方法,它通过“返回”命令返回,因此我的代码后面的RowUpdating正在完成工作......但这不是“它的工作方式的唯一方式”。

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

1 个答案:

答案 0 :(得分:0)

如果使用ObjectDataSource,则必须在一个类中编写update和select方法。也许您必须直接为该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);
    }
}

和ObjectDataSource:

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