2016-11-22 2 views
1

На странице aspx у меня есть Listview с кнопкой выбора в каждой строке. Когда нажата кнопка выбора, она выбирает эту строку, но всегда получает данные из последней строки в списке, а не в том, что выбрал Im.Выбор строки в Listview выбирает последнюю строку в виде списка, а строку выбирает

Контроллер является параметром метода GetDeadline, который вызывает хранимую процедуру для выбора строки, где столбец controlid равен параметру controlid.

protected void ListView1_SelectedIndexChanging(object sender, ListViewSelectEventArgs e) 
    { 
     try 
     { 
      foreach (ListViewItem item in ListView1.Items) 
      { 
       Label mylabel = (Label)item.FindControl("ControlIDLabel"); 
       Session["controlid"] = mylabel.Text; 
      } 

      controlid = Session["controlid"].ToString(); 

      Deadline newdeadline = Deadline.GetDeadline(controlid); 

      Bind(); 
     } 
     catch (Exception ex) 
     { 
      lblStatus.Text = ex.Message; 
     } 
    } 

И еще один пример того, что я имею в виду:

ControlID | Name  | 
--------------------------------- 
1   Row One  Select 
2   Row Two  Select 
3   Row Three Select 
4   Row Four Select 

Независимо от того, какая строка я выбираю, mylabel.Text = "4".

Как я могу получить это, чтобы получить данные из правильной строки?

ответ

0

Вы должны выбрать выбранный товар и в этом изделии найти свою метку. Если вы ищете метку в цикле foreach, она всегда устанавливает значение Session["controlid"] в качестве знака. Попробуйте использовать этот код.

Здесь вы можете узнать больше о ListView.SelectedIndexChanging Event

protected void ListView1_SelectedIndexChanging(object sender, ListViewSelectEventArgs e) 
     { 
      try 
      { 
       ListViewItem item = (ListViewItem)ProductsListView.Items[e.NewSelectedIndex]; 
       Label mylabel = (Label)item.FindControl("ControlIDLabel"); 
       Session["controlid"] = mylabel.Text; 


       controlid = Session["controlid"].ToString(); 

       Deadline newdeadline = Deadline.GetDeadline(controlid); 

       Bind(); 
      } 
      catch (Exception ex) 
      { 
       lblStatus.Text = ex.Message; 
      } 
     } 
+0

Спасибо! В этом есть смысл. –