在 Telerik RadGrid 中单击复选框时打开对话框窗口

Open dialog window on checkbox click in Telerik RadGrid

本文关键字:打开对话框 窗口 复选框 单击 Telerik RadGrid      更新时间:2023-09-26

我有一个Telerik RadGrid,里面有一个GridTemplate列,里面有一个asp:CheckBox。我选择使用 GridTemplate 列而不是 GridCheckBoxColumn 或 ClientSelectColumn,因为我希望用户能够选中该框,并在选中复选框时单击该复选框,打开一个对话框窗口,供他们将附件上载到记录。我不确定我将如何在网格内单击复选框时打开 RadWindow。

我试图实现的总体目标如下:
我有一个看起来像清单的网格。如果用户连续选中复选框,则意味着他们必须为其上传文档,以便打开一个带有小上传表单的对话窗口。一旦他们点击保存,窗口将关闭,网格将重新绑定一个链接,以查看下一列中的附件。如果有人有更好的工作流程,我愿意接受建议,否则任何关于如何做这样的事情的建议将不胜感激。

至于打开RadWindow的命令,我也会以Mark提出的类似方式进行。没有理由使用复选框作为按钮,因为这是此类控件的功能,并且您不需要使用其状态而不是命令。

添加按钮列并设置其CommandName="something"

创建事件项命令在网格和代码隐藏中添加如下内容:

if (e.CommandName == "something")
    {
        if (e.Item is RadGridDataItem)
        {  
            RadGridDataItem item = e.Item as RadGridDataItem;
            string script = "function f(){openRadWindow(); Sys.Application.remove_load(f);}Sys.Application.add_load(f);";
            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "key", script, true);  
        }
    }

添加您的 JS:

function openRadWindow() {
        var radwindow = $find('<%=RadWindow1.ClientID %>');
        radwindow.show();
    }

添加您的 radWindow:

<telerik:RadWindow ID="RadWindow1" VisibleOnPageLoad="false" OnClientClose="//here you can generate the event to rebind your grid and show the update" runat="server" Width="450px" Height="650px" NavigateUrl="Window1.aspx" >
                    </telerik:RadWindow>

创建页面 Window1.aspx 并在其中详细说明加载文件的逻辑。

另一种更简单的方法可能是使用编辑模板表单而不是radWindow,并在其中添加一个asyncUploader以及您可能需要填写的其他控件,以避免必须获取所有引用以将输入关联到记录。

您可以使用带有选中或未选中图像的图像按钮伪造复选框单击,具体取决于您需要的状态(只需找到图像图标)。您还可以将链接按钮与具有各种状态复选框的字体一起使用。

然后,您可以使用命令事件

,该事件将冒泡到radgrid的命令事件。这还允许您设置命令参数来表示所需的行或其他数据。将其推入由视图状态变量支持的属性(如 SelectedItem)中,以便它保持不变,并且可以将窗口的 VisibleOnPageLoad 设置为 true。