1

我有一个包含 asp.net 标签的面板/更新面板。似乎在任何情况下都不能更改此控件的文本字段。代码:

    <asp:Panel runat="server" ID="Panel1" Width="100%">
    <asp:UpdatePanel runat="server" ID="updRouteGroup" UpdateMode="Conditional">
      <Triggers>
        <asp:PostBackTrigger ControlID="btnDisableOnHold" />
      </Triggers>
      <ContentTemplate>        
       <asp:Panel ID="pnlImpExcel" runat="Server" >
      <div style="width:100%">
       <table colspan="0" width="100%" cellpadding="0" cellspacing="0">
          <tr>
             <th colspan="3">
                On Hold Music
             </th>
          </tr>
          <tr style="height:10px"></tr>
          <tr>
             <td align="left" valign="middle" style="width:33%"><div id="fine-uploader"></div></td>
             <td align="center" valign="middle"><asp:Label ID="lblOnHoldFile" runat="server" Text="Current file: none" /></td>
             <td align="right" valign="middle"><asp:Button ID="btnDisableOnHold" runat="server" style="margin-right:7px;width:87px;" Text="Disable Hold Music" CssClass="button" OnClick="btnDisableOnHold_OnClick" /></td>
          </tr>
          <tr><td colspan ="2" align="center"><asp:Label runat="server" ID="lblUploadError" style="color: Red;" Visible="false" /></td></tr>
       </table>              
       </div>
       </asp:Panel> 
       </ContentTemplate> 
    </asp:UpdatePanel> 
    </asp:Panel>

当回发发生时,我可能需要更新它,所以我检查了一些条件,然后尝试通过执行以下操作来修改文本:

protected void Page_Load(object sender, EventArgs e)
{
    if (this.Page.IsPostBack)
       lblOnHoldFile.Text = "Some text.";
}

这段代码可能很糟糕,我对 ASP.NET 的经验很少,并且继承了这个项目。但是,如果您根本无法修改它们,我仍然无法理解在代码隐藏中公开这些标签的意义何在。如何设置控件 lblOnHoldFile 的 .Text 字段?谢谢。

这是 btnDisableHold_OnClick 中的内容:

  protected void btnDisableOnHold_OnClick(object sender, EventArgs e)
  {
     //Update some records

     // Clear out any existing file from the label:
     lblOnHoldFile.Text = "Current file: none";
  }
4

3 回答 3

3

尝试updRouteGroup.Update()在更改标签文本的行之后添加。由于 Label 位于UpdatePanelwith内,因此需要此行显式调用UpdateMode Conditional。但是,单击按钮时不需要它btnDisableOnHold

否则只需更改UpdateModetoAlways并且应该可以。

要了解有关Update Panels及其UpdateMode属性的更多信息,请查看此链接:

http://msdn.microsoft.com/en-us/library/system.web.ui.updatepanel.updatemode.aspx

于 2013-08-07T18:52:48.733 回答
2

那是你的问题,这一行:

lblOnHoldFile.Text = "Current file: none";

您已经撤消了Page_Load在单击事件处理程序中使用上述行所做的文本更改。

您标签的Text属性更改了两次;Some text在方法中一次到Page_Load然后回到它的原始值btnDisableOnHold_OnClick。这使得设置Text值看起来没有任何作用,而实际上它已被更改。

更新:

要让 JavaScript 为您的代码创建回发,您需要调用该__doPostBack函数。

阅读了解 JavaScript __doPostBack 函数

于 2013-08-07T19:05:31.857 回答
1

标记2,

您的标记:

<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server"> <asp:Label ID="someLabel" runat="server"></asp:Label>
</asp:Content>

后面的 C# 代码:

protected void Page_Load(object sender, EventArgs e)
    {
        someLabel.Text = "This is text generated from code-behind, in c#";
    }
于 2013-08-07T18:42:22.383 回答