如何选择项目,DropDownList1.Items.FindByValue(“ - ”)。在wizardstep中选择?例外:NullReferenceException异常

时间:2012-05-13 08:51:24

标签: c# asp.net .net c#-4.0 webforms

如何在 wizardstep中选择项目FindByValue DropDownList

例外:

  

的NullReferenceException
  对象引用未设置为对象的实例。

C#:

protected void Page_Load(object sender, EventArgs e)
{
    ...

    DropDownList DropDownList2 = 
       (DropDownList)Wizard1.WizardSteps[1].FindControl("DropDownList1");

    DropDownList2.Items.FindByValue(
        DataSetLoad.Tables[1].Rows[0]["a"].ToString()).Selected = true;

    ...
}

2 个答案:

答案 0 :(得分:1)

protected void Page_Load(object sender,EventArgs e) {     ...

DropDownList DropDownList2 = 
   (DropDownList)Wizard1.WizardSteps[1].FindControl("DropDownList1");
DropDownList2.DataBind();
DropDownList2.Items.FindByValue(
    DataSetLoad.Tables[1].Rows[0]["a"].ToString()).Selected = true;

...

}

答案 1 :(得分:0)

如果null异常是导向无法工作的唯一原因,则附加调试器,然后使用visual studio immediate window系统地浏览每个对象以确定哪个为null。

例如,Wizard1.WizardSteps[1].FindControl("DropDownList1")如果无法找到您的控件,则可能会返回null。如果是这种情况,那么你可以继续问,为什么它找不到你的控制权。

更新

根据您提供的代码,您有没有直接使用变量DropDownList1的原因?而不是:

DropDownList DropDownList2 = 
   (DropDownList)Wizard1.WizardSteps[1].FindControl("DropDownList1");

DropDownList2.Items.FindByValue(
    DataSetLoad.Tables[1].Rows[0]["a"].ToString()).Selected = true;

为什么不使用:

  DropDownList1.Items.FindByValue(
    DataSetLoad.Tables[1].Rows[0]["a"].ToString()).Selected = true;

上述建议是基于您的原始问题(空引用)发生的假设,因为您的FindControl方法未能成功找到DropDownList1