我有一个 GridView,它与数据源的 DataTable 绑定,当底层数据源中没有记录时,我会显示 EmptyDataTemplate 和两个 DropDown(州和城市),并根据州填充城市。
现在我的问题是直到我在数据源中有一些记录它工作正常,但是一旦我从数据源中删除最后一条剩余的记录,它就会抛出错误,它切换到空数据模板但它找不到状态下拉列表(基于我正在填写城市下拉菜单)。但是一旦我刷新页面,它就可以正常工作。
我不明白要抓取哪个事件来放置代码
这就是我在做什么
下面的函数获取 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();
}
}
}
任何人都可以提供任何建议它出了什么问题