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

如何在JavaScript变量中获取Repeater控件内部的Label值

错误原因

rlbl_Remarks是Repeater控件项模板内的子控件,每个Repeater行都会生成一个独立的rlbl_Remarks实例,页面顶层对象并没有直接声明这个控件,所以你写的<%=rlbl_Remarks.ClientID%>无法解析出有效ID,自然获取不到元素。


解决方法(按常用场景选择)

1. 批量获取所有Remarks值存入JS数组

第一步:给Label添加固定CSS类,方便JS选择:

<asp:Repeater ID="rep_tskAttachments" runat="server" OnItemDataBound="rep_tskAttachments_ItemDataBound">
    <asp:Label ID="rlbl_Remarks" runat="server" CssClass="remarks-label" Text='<%# Eval("REMARKS") %>'></asp:Label>     
</asp:Repeater>

第二步:JS通过类选择器取值:

// 获取所有备注元素节点
const remarkEls = document.querySelectorAll('.remarks-label');
// 转换为值数组
const valComments = Array.from(remarkEls).map(el => el.innerText.trim());
// 要取单条备注直接用索引即可,比如取第一条:const firstComment = valComments[0]

2. 点击行内操作按钮时取当前行对应Remarks值

如果是每行有独立操作按钮,点击时取当前行的备注,可直接通过DOM关联查找:
第一步:修改Repeater模板,添加操作按钮:

<asp:Repeater ID="rep_tskAttachments" runat="server" OnItemDataBound="rep_tskAttachments_ItemDataBound">
    <ItemTemplate>
        <asp:Label ID="rlbl_Remarks" runat="server" CssClass="remarks-label" Text='<%# Eval("REMARKS") %>'></asp:Label>     
        <button type="button" class="get-remark-btn">查看当前备注</button>
    </ItemTemplate>
</asp:Repeater>

第二步:JS绑定点击事件取值:

document.querySelectorAll('.get-remark-btn').forEach(btn => {
    btn.addEventListener('click', function() {
        // 查找当前按钮同级的备注元素
        const currentRemark = this.parentElement.querySelector('.remarks-label').innerText.trim();
        // 后续业务逻辑
        console.log(currentRemark);
    });
});

3. 后台直接序列化所有备注到前端变量

如果不需要操作DOM,可直接在后台把所有备注值序列化为JS数组:
首先在后台.cs文件添加公开属性:

public List<string> AllRemarks = new List<string>();

protected void rep_tskAttachments_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        var rlbl_Remarks = (Label)e.Item.FindControl("rlbl_Remarks");
        AllRemarks.Add(rlbl_Remarks.Text.Trim());
    }
}

前端直接输出JS变量:

const valComments = <%= new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(AllRemarks) %>;

内容的提问来源于stack exchange,提问作者Bilal Aslam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:45:01