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 に答える