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
函数在myobjectdatasource
中运行良好,但是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); }