0

SharePoint 内には、製品リストとカテゴリ リストがあります。Web フォームから新しい (製品) アイテムを作成しようとしています。製品リストにはカテゴリ ルックアップ列があり、製品の新しいインスタンスを作成しようとすると、挿入で null 参照エラーが発生します。非ルックアップ列の値を使用してアイテムを作成する必要があるという投稿を読み、新しいアイテムの ID を取得してから、その値をルックアップ列に挿入しましたが、同じエラーが発生します。誰でもこれを行う正しい方法を手伝ってもらえますか?

ProductDevelopmentDataContext dc = new ProductDevelopmentDataContext(SPContext.Current.Web.Url);
EntityList<ProductItem> Product = dc.GetList<ProductItem>("Product");

ProductItem newProduct = new ProductItem();
newProduct.Title = title.Text;
newProduct.ProductDescription = description.Text;

dc.Product.InsertOnSubmit(newProduct);
dc.SubmitChanges();

var newProductID = (int)newProduct.Id;
ProductDevelopmentDataContext newdc = new ProductDevelopmentDataContext(SPContext.Current.Web.Url);

newProduct = (from p
        in newdc.Product
        where p.Id == newProductID
        select newProduct).Single();
newProduct.CategoryName.Title = category.Text;

newdc.Product.InsertOnSubmit(newProduct);
newdc.SubmitChanges();
4

1 に答える 1

0

これはnewProduct.CategoryNamenull であるためです。ルックアップ タイトルを割り当てるのではなく、オブジェクト自体を割り当てます。

newProduct.CategoryName = category

あとは、SubmitChanges(). もう一度呼び出すInsertOnSubmitと、新しいレコードが作成されます。

ProductDevelopmentDataContextまた、2 つのオブジェクトを作成する必要はありません。すべてのコマンドに dc を使用するだけです。

編集: CategoryItem オブジェクトを取得するには:

newProduct.CategoryName = (from c
        in dc.Categories
        where c.Title == category
        select new c).First();
于 2013-03-29T21:58:36.810 に答える