2015-11-22 43 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到页面,保持任何选定项目的值在后续回发。

相关问题