Here's the setup
- I have a
DetailsView
whoseDataSource
is anObjectDataSource
. - The
ObjectDataSource
has two methods, select and update, that are stored procedures defined in aTableAdapter
. - The
Select
stored procedure takes 1 parameter--the record id--and returns the fields populated in theDetailsView
. - The
Update
stored procedure takes three parameters--the record id, and two data fields.
The select process works fine.
However, when the I submit the update, I get the following error:
ObjectDataSource
could not find a non-generic methodUpdate
that has parameters: [all 21 table columns]
I am trying to only pass the (3) necessary fields to the Update
stored procedure, but the DetailsView
is apparently trying to update using all of the fields it received from Select
.
I know that I can access the NewValues
collection from DetailsViewUpdateEventArgs
, but I do开发者_高级运维n't see a way to remove any of the parameters so that they match the definition in the stored procedure, the TableAdapter
, and the ObjectDataSource
.
Any ideas?
Perhaps this tutorial can provide some insight. As long as you specify your update method and update parameters in your datasource, this should work fine.
I've been able to work around the problem for now by simply removing the unneeded values from the NewValues
collection in the DetailsViewUpdateEventArgs
. However, this is not optimal, since I've added another point of failure if there are changes to the stored procedure or the form.
I'd still like to know if a TemplateField
can be set to ReadOnly
the way that a BoundField
can (see comments below Aaron's answer).
精彩评论