使用JavaScript在不使用PostBack()的情况下从User Control(ascx)设置父页面(aspx)标签文本

时间:2018-08-28 06:35:13

标签: javascript asp.net user-controls postback

我有一个使用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>

1 个答案:

答案 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

进行访问