C# 尝试在formview内绑定dropdownlist时出现空引用异常
我在formview中有一个编辑按钮和一个下拉列表。我使用LINQtoEntities来获取需要处理的数据,填充和查看formview itemtemplate没有问题 但是,dropdownlist控件(C# 尝试在formview内绑定dropdownlist时出现空引用异常,c#,asp.net,linq,webforms,nullreferenceexception,C#,Asp.net,Linq,Webforms,Nullreferenceexception,我在formview中有一个编辑按钮和一个下拉列表。我使用LINQtoEntities来获取需要处理的数据,填充和查看formview itemtemplate没有问题 但是,dropdownlist控件(id=“ddlequality”)仅在edititemtemplate中(我使用itemtemplate中的文本框来显示当前值),并且将此控件绑定到数据源时遇到问题 具体地说,当我单击编辑按钮时,在下面最后一行代码中会出现NullReferenceException-“对象未设置为对象的实例”
id=“ddlequality”
)仅在edititemtemplate
中(我使用itemtemplate
中的文本框来显示当前值),并且将此控件绑定到数据源时遇到问题
具体地说,当我单击编辑按钮时,在下面最后一行代码中会出现NullReferenceException-“对象未设置为对象的实例”
。有人知道我做错了什么吗
protected void btnEdit_Click(object sender, EventArgs e)
{
fvSubscriber.ChangeMode(FormViewMode.Edit);
fvSubscriber.DataBind(); // Adding this line solved the first problem where I could not find the control
LifeLineDSEntities context = new LifeLineDSEntities():
var program = from p in context.EligibilityPrograms
select p;
DropDownList ddlEligibility = (DropDownList)(fvSubscriber.FindControl("ddlEligibility")));
if (ddlEligibility != null)
{
ddlEligibility.DataSource = program;
ddlEligibility.DataTextField = "ProgramName";
ddlEligibility.DataValueField = "eligibilityCode";
ddlEligibility.DataBind();
statusMessage.InnerHtml = "It is NOT null";
}
else
{
statusMessage.InnerHtml = "It is null";
}
}
窗体视图中的下拉列表
<form id="form1" runat="server">
<asp:FormView ID="fvSubscriber" runat="server" RenderOuterTable="false" DefaultMode="Readonly" OnModeChanging="fvSubscriberChanging">
<ItemTemplate>
// mark up here
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddlEligibility" runat="server" />
</EditItemTemplate>
</asp:FormView>
</form>
新更新
我可以通过添加Fvsubriber.databind()找到控件,如上面的代码所示,但是我无法让edititemtemplate在itemtemplate中显示的dropdownlist中显示值。在edititemtemplate中,默认为dropdownlist中的第一项。我已经在上面添加了代码。我已经把这个新问题转移到了一个新的帖子上你可以这样尝试,在给出数据源之前先检查一下
var ddlEligibility = ((DropDownList)(fvSubscriber.FindControl("ddlEligibility")));
if(ddlEligibility!=null)
{
ddlEligibility.DataSource = program;
ddlEligibility.DataBind();
}
else
{
statusMesage.InnerHtml = "IT IS NULL";
}
很可能,它找不到控件。您确定它存在吗?您是否尝试将DDLquality放入DropDownList类型的变量中以确保可以找到它?这可能是我对这个问题的最有可能的猜测,到底是什么?它没有传递到方法中。@Christopher Stevenson fvSubscriber不是null,否则他在调用fvSubscriber.changeMode的第三行上会出错。实际上,这种类型的强制转换会引发异常。您需要var-ddlequalification=(fvSubscriber.FindControl(“ddlequalification”))作为DropDownList代码>获取空值。你好,meda,谢谢你的帮助。我现在没有收到空异常,但是我的dropdownlist是空的。@Jason您必须在分配下拉列表后将其绑定到数据源,看我的update@ChristopherStevenson当您尝试访问控件但为null时,会引发异常这就是我添加condition@meda如果您正在投射的对象实际上不是DropDownList,您将获得CastException。作为实现者,您需要决定该异常是要修复的错误,还是要忽略的错误。