ObjectDataSource没有值插入多个插入参数

时间:2016-04-08 14:50:29

标签: c# asp.net webforms devexpress

我有一个类DocumentRuleViewModel,它具有以下函数定义

Insert(ReplaceRule Obj, int DocumentId)
Select(int DocumentId)
Update(ReplaceRule Obj)
Delete(ReplaceRule Obj)

selectupdatedelete功能可以很好地适用于objectdatasource,但是insert不希望工作并且一直告诉我对象是空的

我收到的错误消息是ObjectDataSource 'dsDocumentSourceRules' has no values to insert. Check that the 'values' dictionary contains values.

有一些像这样的问题,但是我发现没有任何问题可以帮助解决这个问题。

我正在使用的代码在

之下
  <dx:ASPxGridView runat="server" ID="gvDocumentRules" 
        AutoGenerateColumns="False" DataSourceID="dsDocumentSourceRules" KeyFieldName="ID"
    ClientInstanceName="gdDocRules">
    <Columns>
        <dx:GridViewCommandColumn ShowDeleteButton="True" VisibleIndex="0" ShowNewButtonInHeader="True" ShowEditButton="True">
        </dx:GridViewCommandColumn>
        <dx:GridViewDataTextColumn FieldName="ID" VisibleIndex="1"></dx:GridViewDataTextColumn>
        <dx:GridViewDataTextColumn FieldName="TypeID" VisibleIndex="2"></dx:GridViewDataTextColumn>
        <dx:GridViewDataTextColumn FieldName="SearchFor" VisibleIndex="3">
        </dx:GridViewDataTextColumn><dx:GridViewDataTextColumn FieldName="ReplaceText" VisibleIndex="4"></dx:GridViewDataTextColumn>
        <dx:GridViewDataTextColumn FieldName="OrderIndex" VisibleIndex="5"></dx:GridViewDataTextColumn>
    </Columns>
</dx:ASPxGridView>

<asp:ObjectDataSource runat="server" ID="dsDocumentSourceRules" 
    DataObjectTypeName="DocumentBuilder.Models.ReplaceRule" 
    DeleteMethod="Delete" 
    InsertMethod="Insert" 
    SelectMethod="RetrieveRulesForDocument" 
    TypeName="DocumentBuilder.ViewModel.DocumentRuleViewModel" 
    UpdateMethod="Update">
       <InsertParameters>
            <asp:Parameter Name="obj" Type="Object"></asp:Parameter>
            <asp:ControlParameter ControlID="DocumentTypeIDTextBox" PropertyName="Text" DefaultValue="0" Name="DocumentId" Type="Int32"></asp:ControlParameter>
        </InsertParameters>
        <SelectParameters>
            <asp:ControlParameter ControlID="DocumentTypeIDTextBox" PropertyName="Text" DefaultValue="0" Name="DocumentId" Type="Int32"></asp:ControlParameter>
        </SelectParameters>
</asp:ObjectDataSource>

感谢任何想法或解决方案。我觉得我好像缺少一些基本的东西

1 个答案:

答案 0 :(得分:0)

感谢DevExpress团队在他们的网站上回复

  

感谢您的澄清。根据答案   ObjectDataSource没有要插入的值,它似乎是   无法将其他参数传递给Insert方法使用   这种方法。我建议你使用ObjectDataSource.OnInserting   事件处理程序并调用自定义Insert方法。不要忘记   将e.Cancel属性设置为false,否则设置为您的方法   将调用在InsertMethod属性中指定的。请参阅   以下代码段和附加项目。

   protected void dsDocumentSourceRules_Inserting(object sender,
     ObjectDataSourceMethodEventArgs e) {
         ReplaceRule rule = (ReplaceRule)e.InputParameters["obj"];
        DocumentRuleViewModel.Insert(rule, Int32.Parse(DocumentTypeIDTextBox.Value.ToString()));
         e.Cancel = true; } 

...

[DataObjectMethod(DataObjectMethodType.Insert, true)] public static
    void Insert(ReplaceRule obj, Int32 DocumentId) {
         obj.ID = data.Count;
         obj.TypeID = DocumentId;
         data.Add(obj); }