2012-02-23 3 views
2

Я пытаюсь найти метку внутри Repeater, я использую:FindControl внутри Repeater

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 для первого перечисленного элемента. Есть какие нибудь идеи как это починить?

EDIT: В принципе, возврат заполнен информацией о пользователе и с каждой информацией пользователя является ссылкой на другую страницу. Поэтому, когда я нажимаю ссылку, я хочу получить идентификатор от метки для записи, на которую была нажата ссылка. Поэтому, если я нажму запись 4 из 5, я хочу, а ID для записи 4 - 900, я хочу получить 900.

Спасибо!

+2

Вы не говорите это, чтобы получить только первый элемент с помощью Repeater2.Items [** 0 **] FindControl ....? – kaj

+0

@KAJ lololololol – Induster

ответ

0

Из того, что я могу сказать о том, что вы пытаетесь сделать, у вас есть два варианта:

1) Этот код должен быть изменен и помещен в ретрансляторе ItemCommand обработчика события

2) Если lnkbtnEditRecord является контроль в ретранслятор Item, то sender объект, переданный в должен иметь его родителей (или родителя родителя и т.д.) быть RepeaterItem, который должен содержать элемент управления lblSalesId

в любом случае, мы должны были бы больше информации о сценарий и то, что вы пытаетесь сделать

+0

Добавил дополнительную информацию, может объяснить это лучше. Благодаря! –

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"; 
    } 
} 
Смежные вопросы