Я пытаюсь создать представление мастера/детали. Мой DetailsView
работает правильно и на собственной странице, мой GridView
, отображающий мой EquipmentDataSource
, работает правильно. Я могу фильтровать GridView
с помощью FilterParamaters
:ControlParameter возвращает предыдущее значение?
<FilterParameters>
<%-- ControlParameter.Name will String.Formatted with the control's value --%>
<asp:ControlParameter Type="String" Name='eEquipment.Contains("{0}")' ControlID="txtNumber" PropertyName="Text" />
</FilterParameters>
(Я понимаю, динамическое выражение Linq как имя элемента управления является плохой дизайн)
Проблема приходит на место, когда я пытаюсь фильтр на основе на ключе элемент, который показывает DetailsView
. Если я переключусь на элемент, у которого PO # равно 123, тогда 456, то ControlParameter
будет оцениваться как 123. Я думаю, что он может получать значение из ViewState, а не то, что элемент управления в настоящее время имеет, но я понятия не имею, почему.
Код:
<cc:ProcurementDataSource ID="dsProcurements" runat="server" />
<asp:DetailsView ID="dtvProcurements" runat="server" AllowPaging="True" DataSourceID="dsProcurements" />
<cc:EquipmentDataSource ID="dsEquipment" runat="server">
<FilterParameters>
<asp:ControlParameter Type="String" Name='ePO == "{0}"' ControlID="dtvProcurements" PropertyName="DataItem.epClientPO" />
</FilterParameters>
</cc:EquipmentDataSource>
<asp:GridView ID="GridView1" runat="server" DataSourceID="dsEquipment" />
Я звоню Page.DataBind()
на Page_Load
. Я попытался вручную вызвать DataBind()
на каждый элемент управления в случае, если это произошло в странном порядке, но это, похоже, не помогло.