2016-01-07 64 views
0

我想創建一個主/詳細視圖。我的DetailsView正常工作,在其自己的頁面上,我的GridView顯示我的EquipmentDataSource也正常工作。我可以用FilterParamaters過濾GridViewControlParameter正在返回以前的值?

<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_LoadPage.DataBind()。我嘗試在每個控件上手動調用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(); 
}