2015-11-22 58 views
0

我必須在我的應用程序中的2個列表框,我不能從第一個列表框中選擇項目。它說null refference錯誤。如何從asp.net中的列表框中獲取選定的項目?

protected void Page_Load(object sender, EventArgs e) 
{ 

    ListBox1.Items.Clear(); 
    List<Lekarna> lekarne = service.pridobiLekarne().ToList(); 

    foreach (Lekarna a in lekarne) 
    { 
     ListBox1.Items.Add(a.ID + " | " + a.imeLekarne + " | " + a.Kraj + " | " + a.Država + Environment.NewLine); 
    } 

} 


protected void btnPoisci_Click(object sender, EventArgs e) 
{ 

    string a = ListBox1.SelectedItem.ToString(); 
    int c1 = int.Parse(a[0].ToString()); 


    List<Zdravilo> zdravila = service.vrniVsaZdravilaGledeNaLekarno(c1).ToList(); 
    ListBox2.Items.Clear(); 
    foreach (Zdravilo b in zdravila) 
    { 

     ListBox2.Items.Add(b.ID + " | " + b.imeZdravila + " | " + b.letoIzdaje + " | " + b.proizvajalec + Environment.NewLine); 
    } 
} 
+0

你確定service.pridobiLekarne()。ToList();至少包含1個項目? –

+0

因爲'SelectedItem'是'null'。你確定有一個項目被選中?您發佈的代碼中的哪一行是拋出異常。 –

回答

0

問題與您的代碼是在每個回發要重新結合的ListBox。所以,當你點擊按鈕btnPoisci回傳happends其重新綁定列表框,當btnPoisci_Click方法被調用沒有選擇的項目因此下面一行將拋出NRE: -

string a = ListBox1.SelectedItem.ToString(); 

不要每次回傳後的ListBox中添加項目。檢查是否是使用IsPostBack財產,只添加一次在pageLoad的初始GET請求: -

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
    ListBox1.Items.Clear(); 
    List<Lekarna> lekarne = service.pridobiLekarne().ToList(); 
    foreach (Lekarna a in lekarne) 
    { 
     ListBox1.Items.Add(a.ID + " | " + a.imeLekarne + " | " + a.Kraj + " | " 
           + a.Država + Environment.NewLine); 
    } 
    } 
} 
+1

非常感謝,它的工作:) – swdev95

+0

@Tadej - 不客氣:)雖然沒有必要評論,你可以通過接受答案表示感謝。請檢查這個http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

0

你清除每個頁面加載,這意味着你的事件觸發之前,務必清理出的列表中列表中的項目。當你這樣做時,你清除了列表的狀態。嘗試在頁面init上加載項目或檢查它是否IsPostBack。

0

如果不是回發,則只能在ListBox1中加載值。現在,您的頁面加載事件中的第一行代碼將清除所有內容並進行刷新。這樣做:

if (!IsPostBack) { 
    ListBox1.Items.Clear(); 
    List<Lekarna> lekarne = service.pridobiLekarne().ToList(); 
} 

這將只在第一次加載ListBox1到頁面,保持任何選定項目的值在後續回發。

相關問題