2016-01-07 3 views
0

Я пытаюсь создать представление мастера/детали. Мой 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() на каждый элемент управления в случае, если это произошло в странном порядке, но это, похоже, не помогло.

ответ

0

Похоже, я был смущен тем, блокировал ли Control.DataBind().

protected void Page_Load(object sender, EventArgs e) 
{ 
    AutoMapperConfiguration.Initialize(); 
    dtvProcurements.DataBind(); 
    GridView1.DataBind(); 
} 

не работает должным образом в то время как это делает:

protected void Page_Load(object sender, EventArgs e) 
{ 
    AutoMapperConfiguration.Initialize(); 
    dtvProcurements.DataBind(); 
} 

protected void dtvProcurements_DataBound(object sender, EventArgs e) 
{ 
    GridView1.DataBind(); 
} 
Смежные вопросы