【发布时间】:2014-11-05 02:03:40
【问题描述】:
我有一个用 ObjectDataSource 填充的表单视图,它工作得很好。嵌套在其中的是一个网格视图,它也填充了一个嵌套 ODS,它在 99% 的时间里都能完美运行。同样嵌套在 formview 中的是另一个 ODS,该 ODS 从填充其他嵌套数据源的同一控件中填充,该控件始终完美运行。下面的代码使这个有意义。
问题是,如果您更改页面,大部分时间都可以正常工作。该页面内置了 2 个搜索功能。那就是发生错误的地方。如果您在不更改页面的情况下使用它们中的任何一个,则效果很好。如果您使用其中之一,然后更改页面并尝试使用其中任何一个,页面将崩溃并出现错误,提示在“Y”中找不到控制参数“X”。问题是这不是一个真正的错误,因为有一个按钮显示引导模型,该模型显示其网格视图没有问题,并且 ODS 基于完全相同的控件,因此它显然存在。我想这与事件有关,但他们通过就好了。我不确定是什么原因造成的。
这是一个小测试项目,设置基本相同,只是在formview中设置了分页,在实际项目中设置了ODS1,它运行良好。
<asp:FormView ID="FormView1" runat="server" DataSourceID="ObjectDataSource1">
<ItemTemplate>
ImportantID:
<asp:Label Text='<%# Bind("ImportantID") %>' runat="server" ID="ImportantIDLabel" Visible="false" /><br />
Name:
<asp:Label Text='<%# Bind("Name") %>' runat="server" ID="NameLabel" /><br />
<div id="nestedContent">
<asp:ObjectDataSource ID="ObjectDataSource2" runat="server" SelectMethod="listNested" TypeName="TestProject.DataSourceClass">
<SelectParameters>
<asp:ControlParameter ControlID="ImportantIDLabel" PropertyName="Text" DefaultValue="-1" Name="ImportantIDFromOnject1ForNestedObject" Type="Int32"></asp:ControlParameter>
</SelectParameters>
</asp:ObjectDataSource>
<asp:GridView ID="GridView1" runat="server" DataSourceID="ObjectDataSource2" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="YetAnotherProperty" HeaderText="YetAnotherProperty" SortExpression="YetAnotherProperty"></asp:BoundField>
<asp:BoundField DataField="OtherPropertiesGoInThisClass" HeaderText="OtherPropertiesGoInThisClass" SortExpression="OtherPropertiesGoInThisClass"></asp:BoundField>
</Columns>
</asp:GridView>
</div>
SomeProperty:
<asp:Label Text='<%# Bind("SomeProperty") %>' runat="server" ID="SomePropertyLabel" /><br />
SomeOtherProperty:
<asp:Label Text='<%# Bind("SomeOtherProperty") %>' runat="server" ID="SomeOtherPropertyLabel" /><br />
<asp:ObjectDataSource ID="ObjectDataSource3" runat="server" SelectMethod="GetDataObject2" TypeName="TestProject.DataSourceClass">
<SelectParameters>
<asp:ControlParameter ControlID="ImportantIDLabel" PropertyName="Text" DefaultValue="-1" Name="ImportantID" Type="Int32"></asp:ControlParameter>
</SelectParameters>
</asp:ObjectDataSource>
<div id="BootStrapModalPopup">
This displays the data with no problems
</div>
</ItemTemplate>
</asp:FormView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetDataObject1" TypeName="TestProject.DataSourceClass">
<SelectParameters>
<asp:Parameter DefaultValue="-1" Name="ImportantID" Type="Int32"></asp:Parameter>
<asp:Parameter DefaultValue="" Name="Name" Type="String"></asp:Parameter>
<asp:Parameter Name="SomeProperty" Type="String"></asp:Parameter>
</SelectParameters>
</asp:ObjectDataSource>
我会很感激任何关于下一步看哪里的想法。顺便说一句,我在 ID 字段中使用了文本框、隐藏控件和 Session 变量,但没有任何区别。如果我禁用 ODS2,它也会恢复正常工作,但我需要这些数据。
谢谢
吉米
【问题讨论】:
标签: c# asp.net gridview objectdatasource formview