1

我有一个表格,其中有 4 个下拉列表 Country、State、District 和 City。国家/地区在表单加载时填充,其余部分在选定的索引更改事件上填充。序列是 On Country 的选定索引更改状态被填充。在州-> 人口稠密的地区和地区-> 城市上人口稠密。

为了保存它工作正常,但是当我更新值时,它显示空引用错误。在调试时,没有填充下拉菜单,而我正在尝试设置值。下面是我的代码。

using (var manager = new LocationManager())
        {
            var dt = manager.GetLocationById(i);
            if (dt.Rows.Count == 1)
            {
                Countries.SelectedValue = Countries.Items.FindByText(dt.Rows[0]["Country"].ToString()).Value;
                BindStates(Convert.ToInt32(Countries.SelectedItem.Value));

                States.SelectedValue = States.Items.FindByText(dt.Rows[0]["State"].ToString()).Value;
                BindDistricts(Convert.ToInt32(States.SelectedItem.Value));

                Districts.SelectedValue = Districts.Items.FindByText(dt.Rows[0]["District"].ToString()).Value;
               BindCities(Convert.ToInt32(Districts.SelectedItem.Value));

                Cities.SelectedValue = Cities.Items.FindByText(dt.Rows[0]["City"].ToString()).Value;
                Pincode.Text = dt.Rows[0]["Pincode"].ToString();

                ViewState["Id"] = dt.Rows[0]["LocationId"].ToString();



            }
        }

我收到错误:{“对象引用未设置为对象的实例。”} 在方法

BindStates(Convert.ToInt32(Countries.SelectedItem.Value));

4

3 回答 3

0

检查 Country.SelectedItem != null

于 2012-07-03T11:03:44.387 回答
0

@Amit Ranjan:绑定页面初始化方法中的所有值,并在页面加载时为所有下拉菜单选择特定值:

你得到空引用,因为没有值已经绑定到下拉列表。

在页面初始化将所有值绑定到下拉印度美国英国 asp:DropDownList>

页面加载时

DropDownList .SelectedValue= dt.Rows[0]["Country"].ToString()).Value;
于 2012-07-03T11:11:22.897 回答
0

我认为问题不在于下拉列表的数量,而在于找到值,当

Countries.Items.FindByText(dt.Rows[0]["Country"].ToString())

找不到任何匹配的值,它将返回 null。因此,在 null 上应用 'Value' 属性会给出错误。

您可以在选择它之前进行空检查。如下所示:

countryDropDown.SelectedValue = countryDropDown.Items.FindByText(dt.Rows[0]["Country"].ToString()) != null ? countryDropDown.Items.FindByText(dt.Rows[0]["Country"].ToString()).Value : countryDropDown.Items.FindByText("-Please select-").Value;
于 2012-07-03T12:27:31.103 回答