使用Jquery从母版页访问子页面上的控件

时间:2013-12-10 11:54:49

标签: javascript jquery asp.net telerik telerik-javascript

我的一个子页面中有一个(rbtnDelete)按钮, 我想使用 JQuery 在我的母版页中获取按钮Delete的 client-ID 我尝试了很多脚本,但我没有得到任何答案

注意:我正在使用telerik radbutton

客户页码:

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterLogin/Logistic.Master" AutoEventWireup="true"
CodeBehind="CreateRunsheet.aspx.cs" Inherits="DomesticLogisticsManagement.Runsheet.CreateRunsheet" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
...
...

<telerik:RadButton ID="rbtnDelete" runat="server" Visible="false" Text="Delete" Skin="Windows7" OnClick="rbtnDelete_Click" OnClientClicking="CustomRadWindowConfirm" >
</telerik:RadButton>
...
...
</asp:Content>

母版页代码

...
...
 <script type="text/javascript">
  function CustomRadWindowConfirm(sender, args) {
           //Open the window
           $find("<%=confirmWindow.ClientID %>").show();
           //Focus the Yes button
           $find("<%=btnYes.ClientID %>").focus();
           //Cancel the postback
           args.set_cancel(true);
      }
      function YesOrNoClicked(sender, args) {
           var oWnd = $find("<%=confirmWindow.ClientID %>");
           oWnd.close();
           if (sender.get_text() == "Yes") {
                $find("<%=rbtnDelete.ClientID %>").click();
           }
      }

 </script>
<div>
      <asp:Label ID="Label3" runat="server" EnableViewState="false" ForeColor="Green"></asp:Label>
      <telerik:RadWindow ID="confirmWindow" runat="server" VisibleTitlebar="false" VisibleStatusbar="false"
           Modal="true" Behaviors="None" Height="150px" Width="300px">
           <ContentTemplate>
                <div style="margin-top: 30px; float: left;">
                     <div style="width: 60px; padding-left: 15px; float: left;">
                          <img src="img/ModalDialogAlert.gif" alt="Confirm Page" />
                     </div>
                     <div style="width: 200px; float: left;">
                          <asp:Label ID="lblConfirm" Font-Size="14px" Text="Are you sure you want to Delete ?"
                               runat="server"></asp:Label>
                          <br />
                          <br />
                          <telerik:RadButton ID="btnYes" runat="server" Text="Yes" AutoPostBack="false" OnClientClicked="YesOrNoClicked">
                               <Icon PrimaryIconCssClass="rbOk"></Icon>
                          </telerik:RadButton>
                          <telerik:RadButton ID="btnNo" runat="server" Text="No" AutoPostBack="false" OnClientClicked="YesOrNoClicked">
                               <Icon PrimaryIconCssClass="rbCancel"></Icon>
                          </telerik:RadButton>
                     </div>
                </div>
           </ContentTemplate>
      </telerik:RadWindow>
 </div>
....
....
 </form>
 </body>
 </html>

如果我使用此代码获取我的按钮 rbtnDelete 的ClientID,它位于子页面内,我收到的错误是控件不在那里(因为它在子页面内) 请帮我解决这个问题,或者给我解决方案如何从父页面访问子控件或者为我提供解决方案

先谢谢。

2 个答案:

答案 0 :(得分:0)

您使用的是ASP.NET 4.0吗?如果是这样,将rbtnDelete的ClientIDMode设置为“Static”,那么你可以使用: -

$("#rbtnDelete").click();

答案 1 :(得分:0)

分配给按钮的AutoID会将原始服务器ID保留在最后,因此:http://api.jquery.com/attribute-ends-with-selector/

此外,youu可以使用CssClass属性为其提供唯一的类名,并通过jQuery通过该选择器获取它。

另外,为什么您的母版页需要关注内容页面?我认为这里需要重新思考逻辑。

哦,第三个选项 - 创建一个能够在内容页面中返回所需内容的函数,例如:

function getMyButtonClientId() { /* get what you need */ }

并在需要时从主页面调用:

if(getMyButtonClientId) var theIdINeed = getMyButtonClientId();