2011-09-27 64 views
1

我知道這可能很簡單,我只是無法看到它。我有一個aspx窗體,在updata面板中有一個usercontrol。用戶控件是一個人員選取器,用於從公司數據庫搜索用戶。ASP:標籤沒有在按鈕上更新點擊

我想看看發生的是:

  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(); 


    } 

感謝,

朗達

回答

6

因爲標籤更新面板之外,只有更新面板裏面的內容是從一個Ajax後回更新,這是一個更新的整點面板。

你要麼需要移動標籤更新面板的內容區域內,或有標籤的另一個更新面板,使它的更新模式「總是」

+0

我知道這很簡單。我一直盯着它看太久了。 – Rhonda

0

你的標貼是UpdatePanel之外。

在引擎蓋下,ASP.Net執行完整的回發,但只有屬於您的UpdatePanel的部分被傳回客戶端。然後,某些JavaScript會佔用這一點HTML並替換您的UpdatePanel的現有元素<div>

由於您的標籤不在<div>之內,所以他們永遠不會收到更新。