【问题标题】:Opening a RadWindow from a hyperlink field in a GridTemplateColumn从 GridTemplateColumn 中的超链接字段打开 RadWindow
【发布时间】:2015-08-12 13:03:09
【问题描述】:

我的父页面上有一个 RadGrid,其 GridTemplateColumn 包含一个 asp 超链接字段。在网格的 ItemDataBound 事件中,我正在执行以下操作以打开 RadWindow 内的页面(窗口内的页面负责所有逻辑):

hyperlink.Attributes.Add("onclick", string.Format("openDialogWindow({0}, '{1}', '{2}');", productId, categoryId, typeId));

这是用于在窗口内打开页面的 JavaScript 函数:

function openDialogWindow(productId, categoryId, typeId) {
    openRadWindow("DialogPage.aspx?ProductId=" + productId + "&CategoryId=" + categoryId + "&TypeId=" + typeId, "dialog title", 800, 600);
}

我更喜欢在我的父页面上添加一个 RadWindow,并在其内容模板内添加一个用户控件,而不是这样做。用户控件将显示 DialogPage.aspx 所做的一切。父页面将设置控件的所有必要属性(productId、categoryId、typeId),因此当窗口打开时,将根据他们单击超链接按钮的网格单元格显示正确的信息。

这样的事情可能吗?或者正在创建一个在 RadWindow 中打开的单独页面并将查询字符串参数传递给它,这是最好的方法。这就是我目前拥有的方式。

【问题讨论】:

    标签: c# asp.net telerik radgrid radwindow


    【解决方案1】:

    请尝试以下代码 sn-p。

    WebForm1.aspx

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="TelerikWebApp1.WebForm1" %>
    
    <%@ Register TagPrefix="uc" TagName="usercontrol" Src="~/WebUserControl1.ascx" %>
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
        <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
            <script type="text/javascript">
    
            </script>
        </telerik:RadCodeBlock>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <telerik:RadScriptManager ID="RadScriptManager1" runat="server"></telerik:RadScriptManager>
                <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
                    <AjaxSettings>
                        <telerik:AjaxSetting AjaxControlID="RadGrid1">
                            <UpdatedControls>
                                <telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="RadAjaxLoadingPanel1" />
                                <telerik:AjaxUpdatedControl ControlID="RadWindow1" />
                            </UpdatedControls>
                        </telerik:AjaxSetting>
                    </AjaxSettings>
                </telerik:RadAjaxManager>
                <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server"></telerik:RadAjaxLoadingPanel>
                <telerik:RadWindowManager ID="RadWindowManager1" runat="server">
                </telerik:RadWindowManager>
                <telerik:RadWindow ID="RadWindow1" runat="server">
                    <ContentTemplate>
                        <uc:usercontrol ID="usercontrol1" runat="server" />
                    </ContentTemplate>
                </telerik:RadWindow>
                <telerik:RadGrid ID="RadGrid1" runat="server" OnNeedDataSource="RadGrid1_NeedDataSource"
                    AutoGenerateColumns="false">
                    <MasterTableView>
                        <Columns>
                            <telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID">
                            </telerik:GridBoundColumn>
                            <telerik:GridTemplateColumn>
                                <ItemTemplate>
                                    <asp:Button ID="Button1" Text="Button1" runat="server" OnClick="Button1_Click" />
                                </ItemTemplate>
                            </telerik:GridTemplateColumn>
                        </Columns>
                    </MasterTableView>
                </telerik:RadGrid>
            </div>
        </form>
    </body>
    </html>
    

    WebForm1.aspx.cs

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Telerik.Web.UI;
    
    namespace TelerikWebApp1
    {
        public partial class WebForm1 : System.Web.UI.Page
        {
            protected void Page_Load(object source, System.EventArgs e)
            {
    
            }
    
            protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
            {
                dynamic data = new[] {
            new { ID = 1, Name ="Name1"},
            new { ID = 2, Name ="Name2"} };
                RadGrid1.DataSource = data;
            }
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                Button Button1 = sender as Button;
                GridDataItem item = Button1.NamingContainer as GridDataItem;
                string strID = item["ID"].Text;
                (usercontrol1.FindControl("Label1") as Label).Text = strID;
                RadWindow1.VisibleOnPageLoad = true;
            }
    
    
        }
    }
    

    WebUserControl1.ascx

    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="TelerikWebApp1.WebUserControl1" %>
    <asp:Label ID="Label1" runat="server"></asp:Label>
    

    如果有任何问题,请告诉我。

    【讨论】:

      猜你喜欢
      • 2017-04-12
      • 2016-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 2015-11-07
      • 1970-01-01
      相关资源
      最近更新 更多