无法从GridView asp.net中的空数据模板加载控件

无法从GridView asp.net中的空数据模板加载控件,asp.net,gridview,data-binding,Asp.net,Gridview,Data Binding,我有一个GridView,它与数据源的DataTable绑定,当底层数据源中没有记录时,我会显示EmptyDataTemplate,带有两个下拉列表(State和City),并根据状态填充City 现在我的问题是,在数据源中有一些记录之前,它可以正常工作,但一旦我从数据源中删除最后一条剩余记录,它就会抛出错误,它会切换到emptydatatemplate,但它找不到States Dropdownlist(根据它我填写city下拉列表)。但一旦我刷新页面,它就可以正常工作了 我不知道该抓住哪个事件

我有一个GridView,它与数据源的DataTable绑定,当底层数据源中没有记录时,我会显示EmptyDataTemplate,带有两个下拉列表(State和City),并根据状态填充City

现在我的问题是,在数据源中有一些记录之前,它可以正常工作,但一旦我从数据源中删除最后一条剩余记录,它就会抛出错误,它会切换到emptydatatemplate,但它找不到States Dropdownlist(根据它我填写city下拉列表)。但一旦我刷新页面,它就可以正常工作了

我不知道该抓住哪个事件来放置代码

这就是我正在做的

下面的函数获取stateid并基于它填充城市

   private void FillCitiesByStateId()
    {
        drpCity = grdLocationView.Controls[0].Controls[0].FindControl("drpCitiesAdd") as DropDownList;
        drpState = grdLocationView.Controls[0].Controls[0].FindControl("drpStatesAdd") as DropDownList; // Fetches the States DropDown from EmptyDataTemplate.
        if (drpState != null)
        {
            objCity.StateId = Convert.ToInt32(drpState.SelectedValue); //It always throws error on this line.
            drpCity.DataSource = objCity.GetCitiesByStateId();
            drpCity.DataTextField = "Name";
            drpCity.DataValueField = "Id";
            drpCity.DataBind();
        }
    }
下面是代码i,用于绑定下拉列表中的记录

protected void grdLocationView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (dt.Rows.Count == 0)
    {
        FillCitiesByStateId();
    }
    else
    {
        if (e.Row.RowType == DataControlRowType.Header)
        {
            drpCity = e.Row.FindControl("drpCities") as DropDownList;
            drpState = e.Row.FindControl("drpStates") as DropDownList;
            objCity.StateId = Convert.ToInt32(drpState.SelectedValue);
            drpCity.DataSource = objCity.GetCitiesByStateId();
            drpCity.DataTextField = "Name";
            drpCity.DataValueField = "Id";
            drpCity.DataBind();
        }
    }
}

任何人都可以提供任何建议它出了什么问题

请确保您只为适当的行类型调用FillCitiesByStateId()。也许你叫它页脚行

而不是:

if (dt.Rows.Count == 0)
{
    FillCitiesByStateId();
}
尝试:


请包括异常详细信息。它将显示“对象引用未设置为对象的瞬间”。如果在始终出错的行上设置断点,则可以滚动objCity和drpState以查看哪个对象是空引用。你认出这个了吗?
if (e.Row.RowType == DataControlRowType.EmptyDataRow)
{
    FillCitiesByStateId();
}