Рад Сетка + jquery

У меня есть сетка rad на моей странице и полоса вкладок rad, требование состоит в том, что когда пользователь нажимает на любую строку в сетке rad, все детали конкретной строки должны быть заполнены в полосе вкладок rad. Моя функция для заполнения полосы вкладок rad написана на jquery. Моя проблема в том, как получить элементы в сетке радаров. я написал

var grid = $find("RadGrid1")

var items = grid.items.count;

Это дает мне ошибку. Как я могу это исправить?


person Ritz    schedule 03.11.2009    source источник


Ответы (3)


Вы можете получить доступ к значениям для выбранных элементов, используя свойство MasterTableView.ClientDataKeyNames, чтобы указать, к каким ключам вы хотите получить доступ. Вы можете получить доступ к значениям во время события OnRowSelected на стороне клиента, вызвав getDataKeyValues("KeyName"). Вот пример:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="RadGridCustomFooter._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>RadGrid Example</title>
    <script src="Scripts/jquery-1.3.2.js" type="text/javascript"></script>  
</head>
<body>
    <form id="form1" runat="server">
        <telerik:RadScriptManager ID="RadScriptManager1" runat="server" />
        <telerik:RadGrid ID="rgCustomers" runat="server" Skin="Black"
            AllowPaging="true"
            AllowSorting="true"
            PageSize="8">
            <ClientSettings>
                <ClientEvents OnRowSelected="grid_rowSelected" />
                <Selecting AllowRowSelect="true" />
            </ClientSettings>
            <MasterTableView
                ClientDataKeyNames="ID,Name,Address,Sales">
                <Columns>
                    <telerik:GridBoundColumn
                        DataField="ID"
                        UniqueName="ID">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn
                        DataField="Name"
                        UniqueName="Name">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn
                        DataField="Address"
                        UniqueName="Address">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn
                        DataField="Sales"
                        DataFormatString="{0:C}"
                        UniqueName="Sales">
                    </telerik:GridBoundColumn>
                </Columns>
            </MasterTableView>
            <SelectedItemStyle CssClass="none"  />
        </telerik:RadGrid>        
        <div id="results"></div>

        <script type="text/javascript">
            function grid_rowSelected(sender, args) {
                var id = args.getDataKeyValue("ID");
                var name = args.getDataKeyValue("Name");
                var address = args.getDataKeyValue("Address");
                var sales = args.getDataKeyValue("Sales");
                var selectedValues = String.format("ID: {0}, Name: {1}, Address: {2}, Sales: {3}", id, name, address, sales);
                $('#results').html(selectedValues);
            }
        </script>
    </form>
</body>
</html>

И вот код:

using System;
using Telerik.Web.UI;

namespace RadGridCustomFooter
{
    public partial class _Default : System.Web.UI.Page
    {
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            rgCustomers.NeedDataSource += new GridNeedDataSourceEventHandler((s, a) =>
            {
                var customers = new[] {
                    new { ID = 1, Name = "Acme Products", Address = "123 Maple Drive", Sales = 23450 },
                    new { ID = 2, Name = "Northwind", Address = "1 First Street", Sales = 11569 },
                    new { ID = 3, Name = "Alverson Utilities", Address = "890 Union Avenue", Sales = 78232 },
                    new { ID = 4, Name = "Creative Solutions", Address = "91223 Texas Drive", Sales = 110058 },
                    new { ID = 5, Name = "Northwind", Address = "1 First Street", Sales = 11569 },
                    new { ID = 6, Name = "Alverson Utilities", Address = "890 Union Avenue", Sales = 78232 },
                    new { ID = 7, Name = "Northwind", Address = "1 First Street", Sales = 11569 },
                    new { ID = 8, Name = "Acme Products", Address = "123 Maple Drive", Sales = 23450 },
                    new { ID = 9, Name = "Creative Solutions", Address = "91223 Texas Drive", Sales = 110058 },
                    new { ID = 10, Name = "Northwind", Address = "1 First Street", Sales = 11569 },
                    new { ID = 11, Name = "Alverson Utilities", Address = "890 Union Avenue", Sales = 78232 },
                    new { ID = 12, Name = "Acme Products", Address = "123 Maple Drive", Sales = 23450 },
                    new { ID = 13, Name = "Creative Solutions", Address = "91223 Texas Drive", Sales = 110058 }
                };
                ((RadGrid)s).DataSource = customers;
            });
        }
    }
}

Дополнительные сведения см. в документации.

person Kevin Babcock    schedule 05.11.2009

попробуйте инкапсулировать ваш var grid = $find("RadGrid1") внутри функции $(document).ready()

$(document).ready(function() {
    var grid = $find("RadGrid1");
});

Ссылки на стороне клиента на объект ASP.NET создаются в самом конце генерации страницы, поэтому вам нужно подождать, пока это не будет сделано, прежде чем $find сможет дать вам ссылку, которую вы ищете.

person Marek Karbarz    schedule 03.11.2009

Также ознакомьтесь с клиентским API сетки Telerik отсюда: http://www.telerik.com/help/aspnet-ajax/grdgettingfamiliarwithclientapi.html

Дик

person Dick Lampard    schedule 03.11.2009