我有一个包含asp.net标签的面板/ updatepanel。似乎在任何情况下都不能改变该控件的Text字段。代码:
<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";
}
答案 0 :(得分:3)
尝试在更改标签文字的行之后添加updRouteGroup.Update()
。
由于标签位于UpdatePanel
UpdateMode Conditional
内,因此需要显式调用此行。单击按钮btnDisableOnHold
时不应该这样做。
或者只需将UpdateMode
更改为Always
即可。
要详细了解Update Panels
及其UpdateMode
媒体资源,请点击以下链接:
http://msdn.microsoft.com/en-us/library/system.web.ui.updatepanel.updatemode.aspx
答案 1 :(得分:2)
这是你的问题,这一行:
lblOnHoldFile.Text = "Current file: none";
您已撤消在Page_Load
中使用上述行在Click事件处理程序中所做的文字更改。
标签的Text
属性改变了两次;一次到Some text
中的Page_Load
,然后回到btnDisableOnHold_OnClick
方法中的原始值。这使得设置Text
值似乎什么都不做,而实际上它已经改变了。
更新:
要让JavaScript为您的代码创建回发,您需要调用__doPostBack
函数。
答案 2 :(得分:1)
kmarks2,
您的加价:
<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#";
}