DataKeyNames появляются как нежелательные параметры обновления в ASP.NET GridView - PullRequest
2 голосов
/ 18 октября 2010

Я определил следующее в моей разметке gridview (упрощенно):

<asp:GridView ID="grvReport" runat="server" DataSourceID="odsReport" 
                AutoGenerateColumns="False" DataKeyNames="EntryDate,EmployeeNumber">

Затем я определяю параметры обновления источника данных следующим образом:

<UpdateParameters>                                
                <asp:Parameter Name="ID" Type="Int32" />
                <asp:Parameter Name="IsJustified" Type="Boolean" />
                <asp:Parameter Name="Comment" Type="String" />                
                <asp:Parameter Name="LastEditor" Type="String" />     
 </UpdateParameters>

Но при попытке обновления яполучить сообщение об ошибке

не удалось найти неуниверсальный метод «Обновление» с параметрами: ID, IsJustified, Comment, LastEditor, EntryDate, EmployeeNumber.

CanЯ избегаю появления полей в DataKey как параметров для моих методов?

ПРИМЕЧАНИЕ. Я могу обойти это, просто изменив параметры моего метода и добавив дополнительные значения, полученные из Gridview, и ничего не делая с ними, кроме него.было бы неплохо иметь способ избежать этих значений, даже не отправляя их вообще.

Заранее спасибо,
EtonB.

Ответы [ 3 ]

3 голосов
/ 02 февраля 2012

Вы можете удалить их, используя событие обновления ObjectDataSource

 void ods_Updating(object sender, ObjectDataSourceMethodEventArgs e)
 {
    e.InputParameters.Remove("Type_ID");
    e.InputParameters.Remove("Document_ID");
    e.InputParameters.Remove("State_ID");
 }

Я использую DataKeys для поиска, но они мне не нужны в моей процедуре обновления.

1 голос
/ 18 октября 2010

Я думаю, что нет обходного пути. Microsoft признала эту проблему и говорит, что она будет решена в следующей версии. Проверьте здесь для получения дополнительной информации: https://connect.microsoft.com/VisualStudio/feedback/details/260674/generated-default-update-method-in-datatableadapter-in-a-typed-dataset-shouuld-not-update-primary-key.

0 голосов
/ 18 октября 2010

Имена ключей данных представляют собой первичный ключ данных, которые вы обновляете, поэтому я не думаю, что вы могли бы / должны избегать их использования в методе обновления.Если идентификатор действительно является первичным ключом, он должен быть указан под именами ключей данных.В противном случае ваш метод обновления должен принимать EntryDate и EmployeeNumber в качестве параметра вместо идентификатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...