3

我使用 ObjectDataSource 如下。

<asp:ObjectDataSource ID="Item" runat="server" 
                SelectMethod="Grid_DataBind" TypeName="XXX.XXX.XXX" 
                DataObjectTypeName="Controller.Items" UpdateMethod="UpdateRow_Grid"
                InsertMethod="InsertRow_Grid">

当 InsertMethod 触发时,一切正常,但是......

public IList<Items> InsertRow_Grid(Items item)
    {
        item.ID = System.Guid.NewGuid().ToString();          
        bool contains = GridSource.AsEnumerable()
                        .Any(row => item.JobID == row.JobID);
        if (!contains)
        {
            GridSource.Add(item);              
        }
        else
        {              
           lblMsg.Text= "This record has already exists.";               
        }
        return GridSource;
    }

它不知道我的 aspx 文件中显示的标签对象。

在此处输入图像描述

我已阅读内容,以便我可以搜索正确的解决方案。

但我仍然不知道该怎么做。

每一个建议都将不胜感激。

4

2 回答 2

1

这是因为 asp:ObjectDataSource 创建了您在“TypeName”属性中指定的对象的新实例 要使用当前页面对象而不是创建新对象,您需要以下代码:

YourObjectDataSource.ObjectCreating += (s, a) => { a.ObjectInstance = this; };

将其放在 Page_Load 或 Page_Init 中

于 2014-09-15T10:47:00.170 回答
-1

您可以将此代码添加到您的页面

...
<asp:Label id="lblMsg" runat="server"/>
<asp:ObjectDataSource ID="Item" runat="server" 
            SelectMethod="Grid_DataBind" TypeName="XXX.XXX.XXX" 
            DataObjectTypeName="Controller.Items" UpdateMethod="UpdateRow_Grid"
            InsertMethod="InsertRow_Grid">
.....
于 2012-10-09T12:18:58.853 回答