我正在尝试创建一个主视图/详细视图。我的DetailsView可以正常工作,在它自己的页面上,我的GridView显示我的EquipmentDataSource也可以正常工作。我可以使用FilterParamaters过滤GridView
<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的条目,则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_Load上的Page.DataBind()打电话我尝试在每个控件上手动调用DataBind(),以防它以一种奇怪的顺序发生,但这似乎没有帮助。
发布于 2016-01-08 05:00:28
看起来我对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();
} https://stackoverflow.com/questions/34663767
复制相似问题