如何为Telerik RadWindow确认对话框添加TextBox?
实现带备注输入框的RadWindow删除确认弹窗
原来的GridButtonColumn自带的RadWindow确认功能没法直接添加输入框,得通过自定义模板和弹窗来实现,具体步骤如下:
1. 替换GridButtonColumn为GridTemplateColumn
把原来的按钮列改成模板列,自定义删除按钮的点击事件,不再依赖自带的CommandName="Delete":
<telerik:GridTemplateColumn HeaderText="<%$Resources:Resource, myButton %>" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:ImageButton ID="btnDelete" runat="server" ImageUrl="~/images/App/delete.png" OnClientClick="openDeleteConfirm(this); return false;" /> <%-- 隐藏字段存储当前行的主键ID,方便后续删除时使用 --%> <asp:HiddenField ID="hfItemId" runat="server" Value='<%# Eval("YourPrimaryKeyField") %>' /> </ItemTemplate> </telerik:GridTemplateColumn>
2. 添加自定义的RadWindow弹窗
在页面上添加一个RadWindow,里面包含确认提示、备注输入框和操作按钮:
<telerik:RadWindow ID="rwDeleteConfirm" runat="server" Width="400px" Height="220px" Modal="true" VisibleOnPageLoad="false" Title="确认删除"> <ContentTemplate> <div style="padding:20px;"> <p><%$ Resources:DeleteConfirmation %></p> <div style="margin:15px 0;"> <label>删除备注:</label> <telerik:RadTextBox ID="rtbDeleteNote" runat="server" Width="300px" /> </div> <div style="text-align:right;"> <asp:Button ID="btnConfirmDelete" runat="server" Text="确定" OnClick="btnConfirmDelete_Click" /> <asp:Button ID="btnCancelDelete" runat="server" Text="取消" OnClientClick="$find('<%= rwDeleteConfirm.ClientID %>').close(); return false;" /> </div> </div> <%-- 用于存储当前要删除的项ID --%> <asp:HiddenField ID="hfCurrentItemId" runat="server" /> </ContentTemplate> </telerik:RadWindow>
3. 编写客户端脚本打开弹窗并传递行信息
添加JavaScript代码,点击删除按钮时打开弹窗,同时把当前行的主键ID传递到弹窗的隐藏字段中:
function openDeleteConfirm(btn) { // 获取当前行的主键ID var hfItemId = $(btn).siblings("[id$='hfItemId']")[0]; var targetHf = $find('<%= hfCurrentItemId.ClientID %>'); // 把ID存入弹窗内的隐藏字段 targetHf.set_value(hfItemId.value); // 打开RadWindow var radWindow = $find('<%= rwDeleteConfirm.ClientID %>'); radWindow.show(); }
4. 处理后台删除逻辑
在确定按钮的点击事件里,获取备注和主键ID,执行删除操作:
protected void btnConfirmDelete_Click(object sender, EventArgs e) { // 获取要删除的项ID和备注内容 string itemId = hfCurrentItemId.Value; string deleteNote = rtbDeleteNote.Text; // 执行你的删除逻辑,比如调用业务层方法 // YourDeleteBusinessMethod(itemId, deleteNote); // 关闭弹窗并刷新Grid rwDeleteConfirm.VisibleOnPageLoad = false; RadGrid1.Rebind(); }
补充说明
- 把代码里的
YourPrimaryKeyField替换成你Grid数据源中的主键字段名 - 如果需要无刷新操作,可以将RadWindow和Grid放到RadAjaxPanel中,或者通过RadAjaxManager配置更新规则
- 可以给备注输入框添加验证控件,设置是否为必填项
内容的提问来源于stack exchange,提问作者Helen Neely
相关产品推荐
相关产品推荐

