ASPxPopup不会更新ASPxGridView选择更改

时间:2011-11-09 10:15:24

标签: c# asp.net updatepanel devexpress

我有一个ASPxPopupControl和一个ASPxGridView。 在这个PopupControl中,我有自己的usercontrol,其中包含一个用于编辑人员信息的表单。 GridView内部是一个包含不同人员的列表。 当我在gridview中选择不同的人时,我希望popupcontrol的内容更新为所选用户的人员信息,以便我可以编辑它。

我的问题是;我无法让这个工作,我尝试使用各种触发器放置更新面板或强制更新面板更新。但它仍然无效。

PopupControl:

<dx:ASPxPopupControl ID="pcVolgnummerToevoegen" runat="server" AllowDragging="True" ClientInstanceName="popup_toevoegen" CloseAction="CloseButton" LoadingPanelText="Laden&amp;hellip;" Height="700" Width="700" Modal="True" PopupHorizontalAlign="WindowCenter" PopupVerticalAlign="WindowCenter">
<ContentCollection>
<dx:PopupControlContentControl ID="pcVolgnummerToevoegenContent" runat="server">
  <asp:UpdatePanel ID="upnlToevoegen" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
      <uc:GegevensControl ID="ucGegevensControl_Toevoegen" runat="server" />
    </ContentTemplate>
    <Triggers>
      <asp:AsyncPostBackTrigger ControlID="KlantVolgnummerGrid" />
    </Triggers>
  </asp:UpdatePanel>
</dx:PopupControlContentControl>
</ContentCollection>
</dx:ASPxPopupControl>

DataView Selection_Changed:

protected void KlantVolgnummerGrid_SelectionChanged(object sender, EventArgs e)
{
  Session["Person_Id"] = KlantVolgnummerGrid.GetSelectedFieldValues("ID");
}

弹出窗口中的usercontrol的Page_Load

protected void Page_Load(object sender, EventArgs e)
{
 Person varPerson = PersonControllerClient.GetPerson(Session["Person_Id"]);
 ....Code that fills the form
}

我已经检查了GridView的SelectionChanged事件,它会触发。但更新面板不会更新。 刷新页面后,我选择的人将显示在弹出窗口中。

无论如何,我可以更新弹出窗口以显示合适的人,而不必每次选择其他人时都刷新页面吗?

2 个答案:

答案 0 :(得分:4)

禁用ASPxGridView回调模式以使用UpdatePanel回调强制网格。

只需将ASPxGridView.EnableCallBack http://documentation.devexpress.com/#AspNet/DevExpressWebASPxGridViewASPxGridView_EnableCallBackstopic属性设置为“false”。

答案 1 :(得分:0)

移除触发器并在更新面板上添加ChildrenAsTriggers="false"

  <asp:UpdatePanel ID="upnlToevoegen" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
    <ContentTemplate>
      <uc:GegevensControl ID="ucGegevensControl_Toevoegen" runat="server" />
    </ContentTemplate>
  </asp:UpdatePanel>

代码隐藏:

protected void KlantVolgnummerGrid_SelectionChanged(object sender, EventArgs e)
{
  int id = KlantVolgnummerGrid.GetSelectedFieldValues("ID");
  Person varPerson = PersonControllerClient.GetPerson(id);
  ....Code that fills the form

  upnlToevoegen.Update();
}