ASP.NET如何让ObjectDataSource访问System.Web.UI.Page对象

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文件中。

输入图像描述

我已经阅读了这篇文章,以便我可以搜索到适当的解决方案。

但是我仍然不知道如何做。

欢迎提出任何建议。


你在哪里使用lblMsg控件,是在网格内吗?请编写一些产生相同问题的aspx内容。 - mrd
请分享创建"lblMsg"控件的aspx文件。 - Amit Mittal
2个回答

1
这是因为asp:ObjectDataSource会创建您在"TypeName"属性中指定的对象的新实例。如果要使用当前页面对象而不是创建新对象,则需要使用以下代码:
YourObjectDataSource.ObjectCreating += (s, a) => { a.ObjectInstance = this; };

将其放置在 Page_Load 或 Page_Init 中。

-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">
.....

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接