You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:27:27