私は、ASP.net Web フォーム アプリケーションの ObjectDataSource に裏打ちされた GridView を使用しています。GridView は、DataBase から多くのフィールドを取得して表示します。これらのフィールドの 1 つだけを編集できるようにしたいのですが、すでに問題が発生しています。ObjectDataSource の更新コマンドは次のようになります。
public void UpdateRML(string itemCode, int newRML)
{
SqlCommand cmd = new SqlCommand("UpdateRML_byItemCode", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter ItemCodeParameter = new SqlParameter("@itemCode", SqlDbType.NVarChar);
ItemCodeParameter.Value = (itemCode);
cmd.Parameters.Add(ItemCodeParameter);
SqlParameter NewRMLParamter = new SqlParameter("@RML", SqlDbType.Int);
NewRMLParamter.Value = (newRML);
cmd.Parameters.Add(NewRMLParamter);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
ご覧のとおり、2 つのパラメーターを取り、それらをデータベース内のストアド プロシージャに渡して更新を行うことで機能します。残念ながら、GridView の [更新] ボタンを押すと (編集をクリックした後)、このエラーが発生します。
ObjectDataSource 'ObjectDataSource1' could not find a non-generic method
'UpdateRML' that has parameters: p, itemcode, newRML, itemname, RML, Buyer, Vendor,
AvgCost, FWAC, MSRP, SalePrice, Profit_Ave, Profit_MSRP, onHand, isCommited, onOrder, ATS,
AOH, Vintage, Producer, Country, Region, Appellation, CRU, Size, RtrakDept, str.
ほとんどの場合、GridView のすべてのフィールドを含める必要があると言っていますが、 msdnでこのようなことを言っているこの記事を読んだので驚くことではなかったと思いますが、メソッドがこれらのすべてのパラメーターを取得する必要があるときにイライラします。アイテムコードと新しいデータ以外は何も使用していません。
では、これについて最善の方法は何ですか?必要以上に複雑にしていますか?ばかげた署名を使用してこのメソッドを使用する必要がありますか? さらに情報が必要な場合はお知らせください。ありがとうございました。