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

如何使用UpdatePanel实现无页面回发获取Repeater对应行数据

解决方案

实现思路

利用UpdatePanel的异步局部刷新特性,配合Repeater的行命令绑定机制传递行唯一标识,既可以拿到对应行数据,也不会触发整页回发。

步骤1:修改前端页面代码

首先确保页面已引入ScriptManager控件(UpdatePanel运行的必要依赖),然后将Repeater包裹进UpdatePanel内,同时调整LinkButton的事件绑定逻辑,改用命令参数传递当前行的唯一标识:

<!-- 必须先添加ScriptManager,放在页面顶部Form标签内即可 -->
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:Repeater ID="rptCariler" runat="server" OnItemCommand="rptCariler_ItemCommand">
            <ItemTemplate>
                <tr>
                    <td><%#Eval("CariKodu") %></td>
                    <td><%#Eval("CariUnvani") %></td>
                    <td><%#Eval("CariGrubu") %></td>
                    <td><%#Eval("AdSoyad") %></td>
                    <td><%#Eval("Borc") %></td>
                    <td><%#Eval("Alacak") %></td>
                    <td><%#Eval("Bakiye") %></td>
                    <td class="xsml">
                        <!-- 改用Command相关属性传递行标识,移除原OnClick事件 -->
                        <asp:LinkButton ID="lbGetValue" runat="server" CommandName="GetRowData" CommandArgument='<%#Eval("CariKodu") %>'>
                            <span><i class="fas fa-trash-alt"></i></span>
                        </asp:LinkButton>
                    </td>
                </tr>
            </ItemTemplate>
        </asp:Repeater>
    </ContentTemplate>
</asp:UpdatePanel>

步骤2:编写后台事件处理逻辑

在后台代码中实现Repeater的ItemCommand事件,通过CommandArgument拿到当前点击行的唯一标识后,即可获取对应行的全部数据执行后续操作,整个过程只会触发UpdatePanel的局部异步刷新,不会整页回发:

protected void rptCariler_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    if (e.CommandName == "GetRowData")
    {
        // 获取当前行的唯一标识,这里用的是绑定的CariKodu
        string currentCariKodu = e.CommandArgument.ToString();
        
        // 示例:根据CariKodu获取当前行的所有业务数据,可替换为你自己的逻辑
        // DataRow row = 你的数据集合.Select($"CariKodu='{currentCariKodu}'").FirstOrDefault();
        
        // 后续的删除、查询、赋值等操作都在这里写
    }
}

注意事项

  • Repeater的数据绑定代码要放在if(!IsPostBack)判断块内,避免异步回调时重新绑定导致数据丢失
  • 如果需要获取当前行内其他控件的值,可以通过e.Item.FindControl("控件ID")的方式获取
  • 如果需要在事件处理后更新UpdatePanel外的页面内容,可将对应内容也放入独立的UpdatePanel中,或设置UpdatePanel的UpdateMode为Conditional后手动调用UpdatePanel1.Update()方法刷新

内容的提问来源于stack exchange,提问作者Mehmet Akif

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:12:03