ASP: ярлыки не обновляются при нажатии кнопки - PullRequest
1 голос
/ 28 сентября 2011

Я знаю, что это, вероятно, что-то настолько простое, что я просто не могу этого увидеть.У меня есть форма aspx, которая имеет пользовательский контроль на панели обновлений.Пользовательский элемент управления - это средство выбора людей при поиске пользователей из корпоративной базы данных.

Я хочу видеть следующее:

  1. Пользователь нажимает кнопку выбора пользователя
  2. Панель обновления с подборщиком людей становится видимой
  3. Они ищут пользователя, а затем выбирают того, кого хотят.
  4. Когда они делают выбор и нажимают Готово, я получаю идентификатор пользователя и просматриваю их в нашей таблице пользователей.
  5. Информация о пользователе должна отображаться в форме в меткеполя.

Я могу пройтись по коду и увидеть, что я получаю информацию о пользователе и что текст метки устанавливается в значения, но страница никогда не обновляет метки.Это постбек, поэтому я думаю, что они обновятся.

<tr>
        <td colspan="4">
            <asp:UpdatePanel ID="CollapseDelegate" runat="server">
                <ContentTemplate>
                    <asp:Panel ID="pDelegateHeader" runat="server">
                        <div style="padding: 10px 0 10px 20px; height:10px;  text-align: left; background-color:#ffffff; color:#000000; border: 2px solid #ccc;"  >
                            <asp:Label ID="ShowDelegate" runat="server" /><br />
                        </div>
                    </asp:Panel>
                    <asp:Panel ID="pDelegateBody" runat="server">
                        <PP:PeoplePicker ID="PP" runat="server" />
                        <asp:Button ID="btnOk" runat="server" Text="Done" CssClass="Buttons" onclick="btnOk_Click" /> 
                    </asp:Panel>
                    <asp:CollapsiblePanelExtender ID="CollapsiblePanelExtender3" runat="server" TargetControlID="pDelegateBody" CollapseControlID="pDelegateHeader" ExpandControlID="pDelegateHeader" Collapsed="true" TextLabelID="ShowDelegate" CollapsedText="Pick User..." ExpandedText="Close..." CollapsedSize="0"></asp:CollapsiblePanelExtender>
                </ContentTemplate>
            </asp:UpdatePanel>
        </td>
    </tr>
    <tr>
        <td><asp:Label ID="DelegateNameLabel" runat="server" Text="Name:" CssClass="indentedText" /></td>
        <td><asp:Label ID="DelegateNameValueLabel" runat="server" CssClass="indentedText"  Visible="true"></asp:Label></td>
        <td><asp:Label ID="DelegateEmailLabel" runat="server" Text="Email:" CssClass="indentedText" /></td>
        <td><asp:Label ID="DelegateEmailValueLabel" runat="server" CssClass="indentedText" Visible="true"></asp:Label></td>
    </tr>
    <tr>
        <td><asp:Label ID="DelegatePhoneLabel" runat="server" Text="Phone:" CssClass="indentedText" /></td>
        <td><asp:Label ID="DelegatePhoneValueLabel" runat="server" CssClass="indentedText" Visible="true"></asp:Label></td>
        <td><asp:Label ID="DelegateVerifiedLabel" runat="server" Text="Last Verified Date:" CssClass="indentedText" /></td>
        <td><asp:Label ID="DelegateVerifiedValueLabel" runat="server" CssClass="indentedText" /></td>
    </tr>



protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            string PassedDelegateID = string.Empty;
            string Mode = string.Empty;
            int delegateId = 0;

            if (Request.QueryString["Id"] != null)
            {
                PassedDelegateID = Request.QueryString["Id"].ToString();
            }
            else
            {
                PassedDelegateID = "0";
            }

            if (Request.QueryString["mode"] != null)
            {
                Mode = Request.QueryString["mode"].ToString();
            }
            else
            {
                Mode = "add";
            }

            if (Mode == "add")
            {
                pnlUdpateDelegateText.Text = UIConstants.ADDDELEGATETEXT.ToString();
            }
            else
            {
                pnlUdpateDelegateText.Text = UIConstants.UPDATEDELEGATETEXT.ToString();
                if (int.TryParse(PassedDelegateID, out delegateId))
                {
                    loadDelegateData(delegateId);
                }
            }
        }
    }

    protected void btnOk_Click(object sender, EventArgs e)
    {
        TextBox txtSearchValue = (TextBox)PP.FindControl("txtSearchResults");
        string LanId = txtSearchValue.Text;

        User user = BusinessUtility.GetUser(LanId);

        DelegateNameValueLabel.Text = user.Name;
        DelegateEmailValueLabel.Text = user.Email;
        DelegatePhoneValueLabel.Text = user.Phone;
        DelegateVerifiedValueLabel.Text = DateTime.Now.ToShortDateString();


    }

Спасибо,

Ронда

Ответы [ 2 ]

7 голосов
/ 28 сентября 2011

Поскольку ярлыки находятся за пределами панели обновлений, только содержимое внутри панели обновлений обновляется с помощью обратной записи ajax, в этом и заключается весь смысл панели обновлений.

Вам необходимо либо переместитьярлыки внутри области содержимого панели обновлений или используйте другую панель обновлений для ярлыков и установите режим обновления «всегда»

0 голосов
/ 28 сентября 2011

Ваши ярлыки находятся за пределами UpdatePanel .

Под капотом ASP.Net выполняет полную обратную передачу, но только часть, относящаяся к вашей UpdatePanel, передается обратно клиенту. Некоторый JavaScript затем берет этот бит HTML и заменяет существующий элемент <div>, который является вашей UpdatePanel.

Поскольку ваши ярлыки находятся за пределами этого <div>, они никогда не получают обновления.

...