在 Repeater 中查找控件

3

我正在尝试在一个Repeater中查找一个Label,我正在使用:

    protected void lnkbtnEditRecord_Click(object sender, EventArgs e)
    {
        salesEditPanel.Visible = true;
        resultPanel.Visible = false;
        zipPanel.Visible = false;
        ddlPanel.Visible = false;
        topPanel.Visible = false;

        Label lblSalesId = (Label)(Repeater2.Items[0].FindControl("lblSalesID"));

        DataView dv = FillSalesPersonForm(Convert.ToInt32(lblSalesId.Text));

        frmViewSalesPeople.DataSource = dv;
        frmViewSalesPeople.DataBind();

    }

这对于只有一个结果的重复器非常有效,但如果有多个结果,它只获取列出的第一项的ID。 有什么想法来解决这个问题吗?
编辑:基本上返回填充了用户信息,并且每个用户信息都有指向另一页的链接。因此,当我单击链接时,我希望从标签中获取与单击链接的记录相对应的ID。所以,如果我点击五个中的第四个记录,并且第四个记录的ID为900,则我想要获取并传递900。
谢谢!

2
你不是在告诉它只获取第一个项目,使用Repeater2.Items[0].FindControl...吗? - kaj
2个回答

4
尝试类似于以下内容:
foreach (RepeaterItem item in rptItems.Items)
{
    if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
    {
        var lbl= (Label)item.FindControl("lblMyLabel");

        lbl.Text = "do something to your label";
    }
}

0
据我所知,根据您尝试做的事情,您有两个选择:
1)应修改此代码并将其放置在重复器的ItemCommand事件处理程序中。
2)如果lnkbtnEditRecord是重复器项中的控件,则传递的sender对象应该具有其父级(或父级的父级等)为RepeaterItem,其中应包含您的lblSalesId控件。
无论哪种方式,我们都需要更多关于情景和您尝试做什么的信息。

添加了一些更多的信息,可能会更好地解释它。谢谢! - user482375

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接