1

国、州、地区、市区町村の 4 つのドロップダウンがあるフォームがあります。国はフォームの読み込み時に入力され、残りは選択したインデックス変更イベントで入力されます。シーケンスは、国の選択されたインデックスが変更された状態です。州が入力されます。州では -> 地区が居住され、地区では -> 都市が居住されます。

保存するとうまくいきましたが、値を更新するとnull参照エラーが表示されます。私が得たデバッグでは、値を設定しようとしていましたが、ドロップダウンにはデータが入力されていません。以下は私のコードです。

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

Countries.SelectedItem!=nullかどうかを確認します

于 2012-07-03T11:03:44.387 に答える
0

@Amit Ranjan: ページの初期化メソッドですべての値をバインドし、ページの読み込み時に、すべてのドロップダウンで特定の値を選択します。

ドロップダウンに既にバインドされている値がないため、null 参照を取得しています。

ページの初期化で、すべての値をドロップダウン インド US UK 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」プロパティを適用すると、エラーが発生します。

選択する前に null チェックを入れることができます。以下のようなもの:

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 に答える