1

如何在向导步骤中选择项 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;

    ...
}
4

2 回答 2

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;

...

}

于 2012-05-13T12:41:04.243 回答
0

如果 null 异常是您的向导不工作的唯一原因,则附加一个调试器,然后使用Visual Studio 即时窗口系统地检查您的每个对象以确定哪个为 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

于 2012-05-13T09:16:07.540 回答