当前位置: 首页 > 知识库问答 >
问题:

点击网格数据时弹出剑道窗口

夏高朗
2023-03-14

我在我的项目中为10个产品创建了剑道网格。当我点击剑道网格中显示的productname时,我希望弹出包含产品详细信息的剑道窗口。

我已经查看了剑道网格的演示,但我不想编辑所选产品的详细信息,也不想使用示例和演示中所示的“详细信息”按钮的单独列。

我还查看了剑道ui的音乐商店演示,但我无法理解它的代码,因为它在jQuery中,我正在使用asp。net mvc与我的项目的razor语法

注意:我希望窗口只在我点击产品名称并显示其详细信息时出现。

共有2个答案

曾洲
2023-03-14

您可以使用详细模板来实现它。

 <script>
            var wnd,
                detailsTemplate;

            $(document).ready(function () {
                var grid = $("#grid").kendoGrid({
                    dataSource: {
                       pageSize: 20,
                       data: createRandomData(50)
                    },
                    pageable: true,
                    height: 550,
                    columns: [
                        { field: "FirstName", title: "First Name", width: "140px" },
                        { field: "LastName", title: "Last Name", width: "140px" },
                        { field: "Title" },
                        { command: { text: "View Details", click: showDetails }, title: " ", width: "180px" }]
                }).data("kendoGrid");

                wnd = $("#details")
                    .kendoWindow({
                        title: "Customer Details",
                        modal: true,
                        visible: false,
                        resizable: false,
                        width: 300
                    }).data("kendoWindow");

                detailsTemplate = kendo.template($("#template").html());
            });

            function showDetails(e) {
                e.preventDefault();

                var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
                wnd.content(detailsTemplate(dataItem));
                wnd.center().open();
            }
        </script>

        <script type="text/x-kendo-template" id="template">
            <div id="details-container">
                <h2>#= FirstName # #= LastName #</h2>
                <em>#= Title #</em>
                <dl>
                    <dt>City: #= City #</dt>
                    <dt>Birth Date: #= kendo.toString(BirthDate, "MM/dd/yyyy") #</dt>
                </dl>
            </div>
        </script>

去这个小提琴上做一个工作演示

[更新]以下是在单击产品名称时显示窗口的代码片段

 <script>
            var wnd,
                detailsTemplate;

            $(document).ready(function () {
                var grid = $("#grid").kendoGrid({
                    dataSource: {
                       pageSize: 20,
                       data: createRandomData(50)
                    },
                    pageable: true,
                    height: 550,
                    columns: [
                        { field: "FirstName", title: "First Name", width: "140px",attributes: { "class": "FirstName"} },
                        { field: "LastName", title: "Last Name", width: "140px" },
                        { field: "Title" }]
                }).data("kendoGrid");

                wnd = $("#details")
                    .kendoWindow({
                        title: "Customer Details",
                        modal: true,
                        visible: false,
                        resizable: false,
                        width: 300
                    }).data("kendoWindow");

                detailsTemplate = kendo.template($("#template").html());

                $('#grid').on("click", ".FirstName", function (e) {

                  e.preventDefault();

                var dataItem =               $("#grid").getKendoGrid().dataItem($(e.currentTarget).closest("tr"));
                wnd.content(detailsTemplate(dataItem));
                wnd.center().open();


  });
            });


        </script>

        <script type="text/x-kendo-template" id="template">
            <div id="details-container">
                <h2>#= FirstName # #= LastName #</h2>
                <em>#= Title #</em>
                <dl>
                    <dt>City: #= City #</dt>
                    <dt>Birth Date: #= kendo.toString(BirthDate, "MM/dd/yyyy") #</dt>
                </dl>
            </div>
        </script>

工作演示在这里

闻人哲茂
2023-03-14

您可以使用:

$('#grid').on("click", "tr.k-state-selected", function (e) {
    // open window here
    // you have i.e. Id here $('#grid').dataItem($('#grid').select()).Id
});

为此,必须在网格配置中设置选项可选:“行”。否则,您可以仅使用:

$('#grid').on("click", "tr", function (e) { ... }
 类似资料:
  • 我正在使用Kendo网格,其中有几个列用于概览行数据。当用户单击添加/编辑按钮时,弹出窗口将显示一些附加数据,其中包括一些复选框。 我在将复选框与当前MVVM模型绑定时遇到问题,因为在添加新行时,Kendo将模型视为变量,而不是数组。这会导致在选中一个复选框(单击)时选中多个复选框。在看了剑道MVVM之后,我打算得到当前弹出窗口的MVVM模型,以便操作一些数据,但没有成功。因此,我将在以下方面寻求

  • 我想在显示(打开)弹出编辑器之前得到确认,单击剑道网格中的编辑命令按钮与删除确认相同。 我使用了网格的编辑事件。它成功地显示了确认对话框,但其后面也打开了弹出编辑器窗口。 是否有任何方法我只能在用户确认后显示弹出编辑器窗口?

  • 当我添加新行并在编辑eventHandler(model.set(“port”,“udp”))中设置模型属性的值时,网格弹出mvvm绑定似乎失败,但选择输入不会更改值,并且从调试器控制台显示该事件。模型的属性值保持不变。 但是在我手动选择端口后,我尝试model.set(端口,tcp),它工作! 我混淆了输入元素的值字段绑定机制和剑道模型绑定的时间。。。 Html部分如下所示: 如下所示:

  • 我有一个剑道网格和一个按钮栏。单击按钮时,我希望它调用一个javascript函数,并将行的数据作为参数。这是我到目前为止所拥有的

  • 我见过其他类似的问题,但似乎到目前为止我做的一切都是对的,没有任何效果。正如标题所述,对于我的一个专栏,我试图使用dropdownlist作为弹出窗口中的字段。 指数cshtml: 然后在/Views/Shared/EditorTemplates DeptDropdown的内部。cshtml: 然后是版本\实用程序\模型的内部。反恐精英:

  • 我正在使用剑道用户界面ASP。NET MVC网格(Razor)在Ajax模式下使用弹出式编辑器。 比如说:客户有订单 应用程序的用户转到显示所有客户的网格。允许用户添加/编辑/删除客户(及其订单)。但是当用户点击编辑,弹出编辑器出现时,我想加载订单。我不想急于加载订单,因为一个客户可能有很多订单,用户可能根本不会编辑任何客户。 看起来这应该是一件简单的事情。我浏览了所有论坛/问题。我找不到这样的例