我有一个使用JavaScript且没有回发或部分回发(更新面板)的用户控件(ASCX)中更改ASPX labelText的要求。
请提出如何实施此建议?谢谢
//编辑
ASCX标记
<script type="text/javascript" charset="UTF-8">
function Show(text) {
Popup.innerHTML = text;
x = event.clientX + document.body.scrollLeft + 50;
y = event.clientY + document.body.scrollTop + 20;
Popup.style.display = "block";
Popup.style.left = x - Popup.scrollWidth + "px";
Popup.style.top = y + "px";
}
function Hide() {
Popup.style.display = "none";
}
</script>
<script type="text/javascript">
function SaveTargetSign(id) {
// Here i want to Access Parent Page Label and Set value.
}
</script>
<table id="table1" width="970px" runat="server" cellpadding="0" cellspacing="0" style="border: solid 1px #D2B48C;">
<tr>
<td>
<table id="tableSignature" width="975px" runat="server" cellpadding="0" cellspacing="0" style="border: solid 0px #D2B48C; background-color: ">
<tr id="rowStatic" runat="server">
<td id="TD1" valign="top" style="width: 165px; border-bottom: solid 1px #D2B48C">
<div>
<div class="gridview">
<div class="outerSVSParent">
<div class="scroll">
<table class="gridtable" cellspacing="0" rules="all" border="1" style="width: 100%;
border-collapse: collapse;">
<tr class="header" style="height: 20px;">
<td scope="col" id="lblDiv" runat="server">
<asp:Label ID="lblParentTitle" runat="server" Text="Title"></asp:Label>
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
<div style="text-align: center">
<table>
<tr>
<td>
<asp:Label ID="lblSignId1" runat="server" Text=""></asp:Label>
</td>
<td>
<uc1:ImageControl id="imageCtrl" runat="server" ShowActionButton="False" Height="80px" Width="100px" />
</td>
</tr>
<tr></tr>
</table>
</div>
<%-- <div>
<asp:Panel ID="pnlTargetSign" runat="server" Height="16px" HorizontalAlign="Center">
<asp:CheckBox ID="cbTargetSign" runat="server" Text="Target Sign" TextAlign="Right" BackColor="White" ForeColor="#333333" BorderColor="#0066FF" BorderStyle="None" />
</asp:Panel>
</div>--%>
</td>
<td valign="top" style="border-bottom: solid 1px #D2B48C;">
<div style="height: 116px; overflow: scroll; padding-right: 20px;" id="tblDiv" runat="server">
<%-- <unisign:unisigngridview id="GridviewChild" autopostback="false" isnestedsvsgridview="True" pagesize="2" allowpaging="true" --%>
<UniSign:UniSignGridView ID="GridviewChild" AutoPostback="false" IsNestedSVSGridView="True" Width="805px" AllowSorting="true" runat="server">
</UniSign:UniSignGridView>
</div>
</td>
</tr>
</table>
<%-- <unisign:unisigngridview id="GridviewChild" autopostback="false" isnestedsvsgridview="True" pagesize="2" allowpaging="true" --%>
<div id="Popup" class="transparent" style="z-index: 200; width: auto; height: auto">
</div>
<asp:HiddenField ID="HFSVCurrentSelectedindex" Value="-1" runat="server" />
<asp:HiddenField ID="HFTargetSign" Value="0" runat="server" />
</td>
</tr>
</table>
用于触发JavaScript的服务器端代码
Dim scriptStatic = String.Format("javascript:return SaveTargetSign('{0}');", ststicId)
rowStatic.Attributes.Add("onclick", scriptStatic)
父页面标签标记
<asp:Label ID="lblTSV" runat="server" BackColor="#F4F4F4" Font-Bold="True" Font-Names="Arial" Font-Size="Small" ForeColor="#666666"></asp:Label>
答案 0 :(得分:0)
为您提供一个示例,说明如何使客户端与您可以使用的任何控件进行对话
document.getElementById('<%=Label.ClientID%>').innerHTML = "Tekst";
控件在客户端使用不同的名称,这就是为什么您需要使用document.getElementById
的原因。
要实现所需的功能,可以使用以下从服务器端对javascript的调用。使用而不是Page.User.Identity。命名要显示的文本
Page.ClientScript.RegisterStartupScript(GetType(), "changeLabelText", string.Format("changeLabelText('{0}');", Page.User.Identity.Name), true);
在这种情况下,哪个将在客户端执行调用的脚本changeLabelText(labelText)并传递身份名称。
function changeLabelText(labelText){
document.getElementById('<%=LBLProjectsHeader.ClientID%>').innerHTML = labelText;
}
希望该示例为您提供一个想法,如果您想直接加载页面时更改标签上的文本。
编辑,某些控件可以使用.value而不是.innerHTML
进行访问