C# - 使用ListBox填充其他字段

时间:2009-10-28 21:53:29

标签: c# asp.net listbox

我正在尝试使用ListBox控件的选定值来填充TextBox及其Text属性,以及HiddenField及其value属性。这听起来很简单,我接受了这个:

currentGroupTextBox.Text = currentSiteGroupList.SelectedItem.Text;
currentGroupHiddenField.Value = currentSiteGroupList.SelectedValue;

但是在执行时,ASP.NET会返回错误:

Object reference not set to an instance of an object.

并突出第一行。 currentGroupTextBox和currentGroupHiddenField是在ASPX文件中启用的两个控件,所以我不太清楚为什么ASP.NET会抱怨实例化它们。

4 个答案:

答案 0 :(得分:1)

我愿意打赌你的第一行是引用currentSiteGroupList.SelectedItem的窒息,因为这似乎是最有可能成为空引用的候选者。确保您的代码在ASP.NET页面生命周期中的正确位置执行,以便在幕后正确设置SelectedItem

答案 1 :(得分:1)

来自currentSiteGroupList.SelectedItem的SelectedItem可能为null(表示没有选择)。您需要先测试它,然后再将其分配给currentGroupTextBox.Text

答案 2 :(得分:1)

我将尝试将所有问题的答案汇总在一起,包括评论中的问题。

  1. 即使SelectionMode="Single",列表框也会在没有选择任何内容的情况下开始,除非您指定应在代码中选择哪个项目。

  2. 要测试SelectedItem是否为null,请使用以下代码:

  3. if (currentGroupSiteList.SelectedItem != null) {
        currentGroupTextBox.Text = currentSiteGroupList.SelectedItem.Text;
        currentGroupHiddenField.Value = currentSiteGroupList.SelectedValue;
    }
    
    1. 加载列表框的Page_Load代码是什么样的?它是用if (!Page.IsPostBack)支票包裹的吗?如果没有,按下按钮并启动回发将重新加载列表框,从而丢失用户选择的SelectedItem。

答案 3 :(得分:0)

是currentGroupTextBox还是currentGroupTextBox为null? 在调试中,如果在该行停止..它是否存在一个或两个? 我发现的一个常见问题是控件放在asp formview或类似的控件上,因此对该控件的引用实际上并不是它的id / name,但更可能是你需要做的;

TextBox myTextBoxReference = (TextBox) formName.FindControl("currentGroupTextBox")
string theValue = myTextBoxReference.Text

另一个常见问题是页面生命周期。因此,如果您的对象不在表单上,​​但您可能在回发之前存在它之前引用它。 HTH