我有一个带有 GridTemplate 列的 Telerik RadGrid,其中有一个 asp:CheckBox。我选择使用 GridTemplate 列而不是 GridCheckBoxColumn 或 ClientSelectColumn,因为我希望用户能够选中该框,并在选中该复选框时单击该复选框,打开一个对话框窗口,以便他们将附件上传到记录。我不确定如何在网格内单击复选框时打开 RadWindow。
我试图实现的总体目标如下:
我有一个看起来像 list 的网格。如果用户连续选中该复选框,则意味着他们必须为其上传文档,以便打开一个对话框窗口,其中包含一个小的上传表单。一旦他们点击“保存”,窗口将关闭,网格将重新绑定(bind)一个链接,以查看下一列中的附件。如果有人有更好的工作流程,我愿意接受建议,否则任何有关如何做这样的事情的建议将不胜感激。
最佳答案
至于打开 RadWindow 的命令,我也会采用与 Mark 提议的类似的方式。没有理由使用复选框作为按钮,因为这是此类控件的功能,并且您不需要使用其状态而不是命令。
添加按钮列并设置其CommandName="something"
在网格中创建事件 itemCommand 并在后面的代码中添加如下内容:
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 并在其中详细说明加载该文件的逻辑。
另一种更简单的方法可能是使用 edit template form而不是 radWindow 并在其中添加 asyncUploader 以及您可能需要填写的其他控件,以避免必须获取所有引用以将输入关联到记录。
关于javascript - 在 Telerik RadGrid 中单击复选框打开对话框窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29043158/