2016-11-22 50 views
1

在aspx頁面中,我有一個列表視圖,每列都有一個選擇按鈕。當選擇按鈕被點擊時,它會選擇該行,但它總是從列表視圖中的最後一行獲取數據,而不是我選擇的那一行。在列表視圖中選擇行選擇列表視圖中的最後一行,而不是我選擇的行

controlid是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

謝謝!這就說得通了。 –