C# ObjectDataSource没有可插入多个插入参数的值

C# ObjectDataSource没有可插入多个插入参数的值,c#,asp.net,webforms,devexpress,C#,Asp.net,Webforms,Devexpress,我有一个类DocumentRuleViewModel,它有以下函数定义 Insert(ReplaceRule Obj, int DocumentId) Select(int DocumentId) Update(ReplaceRule Obj) Delete(ReplaceRule Obj) select、update和delete函数在myobjectdatasource中运行良好,但是insert不希望运行,并一直告诉我对象为空 我收到的错误消息是ObjectDataSource“dsDo

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

Insert(ReplaceRule Obj, int DocumentId)
Select(int DocumentId)
Update(ReplaceRule Obj)
Delete(ReplaceRule Obj)
select
update
delete
函数在my
objectdatasource
中运行良好,但是
insert
不希望运行,并一直告诉我对象为空

我收到的错误消息是
ObjectDataSource“dsDocumentSourceRules”没有要插入的值。检查“值”字典是否包含值。

有一些像这样的问题,但是我发现没有一个能帮助我解决这个问题

下面是我正在使用的代码

  <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>


如有任何想法或解决方案,我们将不胜感激。我觉得我好像错过了一些基本的东西

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

谢谢你的澄清。根据在 ObjectDataSource没有要插入的值,似乎是 无法使用将其他参数传递给Insert方法 这是一种方法。我建议您使用ObjectDataSource.OnInserting 事件处理程序并调用自定义插入方法。别忘了 将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); }