ASP:标签不更新按钮单击



我知道这可能是很简单的事情,我只是无法看到它。我有一个aspx表单,在更新面板中有一个用户控件。用户控件是一个人员选择器,用于从公司数据库中搜索用户。

我想看到的是:

  1. 用户点击选择用户按钮
  2. 带有人员选择器的更新面板变得可见
  3. 他们搜索用户,然后选择他们想要的用户。
  4. 当他们做出选择并点击完成时,我得到用户的用户id并在我们的用户表中查找它们。
  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();

    }

谢谢,朗达

因为标签在更新面板之外,所以只有更新面板内的内容才会从ajax post-back更新,这就是更新面板的全部意义。

你需要在更新面板的内容区域内移动标签,或者为标签设置另一个更新面板,并使其更新模式为"always"

你的标签在UpdatePanel之外。

在引擎盖下,ASP。Net执行完整的回发,但只有与UpdatePanel相关的部分被传输回客户端。然后,一些JavaScript将这部分HTML替换为现有的<div>元素,即UpdatePanel。

由于你的标签在<div>之外,它们永远不会得到更新

相关内容

  • 没有找到相关文章

最新更新