c# - 列表框控件在选择项目时抛出空异常

标签 c# asp.net visual-studio-2010 listbox postback

我正在 asp.net 4.0 中创建一个 web 应用程序

我有一个 Web 表单,其中有一个 ListBox 控件,它在 Page_Load 事件上添加了一个字符串列表。如果我从 ListBox 选择任何列表项并想使用 Listbox.SelectedValue 计算它,它会在 Listbox 上抛出 Object reference not set to an instance of an object 异常.SelectedValue.

通过使用“QuickWatch”(在 Visual Studio 2010 中)我做了一些发现,我可以通过给出索引(比如 Listbox.Items[2])来获得值(value),但如果我得到 null 或 -1我使用 Listbox.SelectedValueListbox.SelectedIndex

我的问题是为什么 ListBox 控件在选择项目时显示 null 异常错误,因为此列表框不为空?

最佳答案

我假设您在回发时将 ListBox 绑定(bind)到它的 DataSource,对吗?那么ListBox就会失去他的SelectedValue(连SelectedIndexChanged事件都不会被触发)。

相反,您应该仅在初始加载时进行数据绑定(bind)并检查 IsPostback属性:

C#

protected void Page_Load(object sender, EventArgs e)
{
    if(!Page.IsPostBack) 
    {
        // pseudo code: 
        ListBox1.DatSource = GetYourDataSource();
        ListBox1.DataBind();
    }
}

VB.NET

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        ' pseudo code: '
        ListBox1.DatSource = GetYourDataSource()
        ListBox1.DataBind()
    End If
End Sub

关于c# - 列表框控件在选择项目时抛出空异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11003619/

相关文章:

c# - asp.net 从内容页面更改母版页部分 css

c++ - 更改 openni2 上的分辨率不起作用

c++ - 多个 WT 应用程序可以在同一个端口上运行吗?

c# - 在Windows 10下使用SharpDX 2.6.3

c# - (-) Convert 方法中使用的符号

C# 如何使用 linq 按索引对文件列表进行排序

asp.net - 凭据未在生产服务器中的 WCF 调用中传递

c# - 如何在 .Net Core 中创建自定义异常和错误处理程序?

c# - Visual Studio 中没有父窗体的设计面板

c# - 选定的 ComboBoxItem 图像没有改变