Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试在formview内绑定dropdownlist时出现空引用异常_C#_Asp.net_Linq_Webforms_Nullreferenceexception - Fatal编程技术网

C# 尝试在formview内绑定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-“对象未设置为对象的实例”

我在formview中有一个编辑按钮和一个下拉列表。我使用LINQtoEntities来获取需要处理的数据,填充和查看formview itemtemplate没有问题

但是,dropdownlist控件(
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。作为实现者,您需要决定该异常是要修复的错误,还是要忽略的错误。