我正在使用ASP.net Web表单应用程序上的ObjectDataSource支持的GridView。 GridView从DataBase中获取了很多字段并显示它们。我想要只编辑这些字段中的一个,但我已经遇到了一些问题。我对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();
}
正如您所看到的,它通过获取两个参数并将它们传递给数据库中的存储过程来进行更新。不幸的是,当我按下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的所有字段,我想这并不奇怪,因为我读过这个article on msdn,它说的是这样的东西,但它令人沮丧的方法需要当我不使用除物品代码和新数据之外的任何东西时,取所有这些参数。
那么最好的方法是什么呢?我是否比它应该更复杂?我是否应该用一种荒谬的签名来使用这种方法?如果您需要更多信息,请与我们联系!谢谢。
答案 0 :(得分:0)
如果有人发现这个并且对答案感兴趣:我必须为GridView将AutoGenerateColumns
设置为false,而使用asp:BoundField
代替。我将每个BoundField的ReadOnly
属性设置为“False”,除了我想要编辑的那个,然后是bam!现在UpdateRML()
方法只需要一个参数:RML。