代码之家  ›  专栏  ›  技术社区  ›  Astaar

C-使用列表框填充其他字段

  •  0
  • Astaar  · 技术社区  · 16 年前

    我正在尝试使用ListBox控件的选定值来用文本属性填充文本框,用值属性填充HiddenField。听上去很简单,我接着说:

    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 回复  |  直到 16 年前
        1
  •  1
  •   Jason Berkan whiteproud    16 年前

    我会把你所有的问题,包括评论中的问题,都集中起来回答。

    1. 即使 SelectionMode="Single" ,除非在代码中指定应选择的项,否则列表框将在不选择任何内容的情况下开始。

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

    if (currentGroupSiteList.SelectedItem != null) {
        currentGroupTextBox.Text = currentSiteGroupList.SelectedItem.Text;
        currentGroupHiddenField.Value = currentSiteGroupList.SelectedValue;
    }
    
    1. 您的页面加载加载列表框的代码是什么样子的?包裹着吗 if (!Page.IsPostBack) 检查?否则,按下按钮并启动回发将重新加载列表框,从而丢失用户选择的SelectedItem。
        2
  •  1
  •   Adam Maras    16 年前

    我敢打赌,你的第一句话在引用上令人窒息。 currentSiteGroupList.SelectedItem ,因为这似乎是最有可能成为空引用的候选对象。确保代码在ASP.NET页生命周期内的正确位置执行,以便 SelectedItem 在后台设置正确。

        3
  •  1
  •   Andre Pena    16 年前

    从当前网站组列表中选择editem。selecteditem可能为空(表示没有选择)。在将其分配给currentGroupTextBox.text之前,需要对其进行测试。

        4
  •  0
  •   wortho    16 年前

    当前组文本框还是当前组文本框为空? 在DEBUG中,如果在该行停止..它是一个还是两个都不存在? 我发现的一个常见问题是,控件被放置在ASP FormView或类似控件上,因此对该控件的引用实际上不是其ID/名称,而是更可能需要执行的操作;

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

    另一个经常出现的问题是页面生命周期。因此,如果您的对象不在表单上,但可能是在它在回发中存在之前引用它。 高温高压

    推荐文章