0

以下に示すように、メソッドのドロップダウンリストに値を追加します

pageload()
{
method(type);
}
public void method(type)
{
 dropdownlist1.items.clear();
 if(type == "Student")
 {
  dropdownlist1.items.add("abc");
  dropdownlist1.items.add("xyz");
 }
}

ドロップダウンリストの値を選択すると、ポストバック後に失われ、取得するためにこれを行います

public void method(type)
{
 string selection = dropdownlist1.selectedItem.text;
 Viewstate["selectionValue"] = selection;
 dropdownlist1.items.clear();
 if(type == "Student")
 {
  dropdownlist1.items.add("abc");
  dropdownlist1.items.add("xyz");
 }
}

ただし、次の行で例外が発生します。

string selection = dropdownlist1.selectedItem.text;

例外メッセージ:

{オブジェクト参照がオブジェクトのインスタンスに設定されていません}

そして、私はそれが来る理由を知っています。初めてdropdownlist1ロードしたときに のオブジェクトが見つからなかったため、dropdownlist例外が発生しました。私の質問は、後でdropdownlist1失われない選択値を取得する場所postbackです。

4

4 に答える 4

1

この質問は、asp.net ページのライフサイクルに関するものです。ここに参照があります: http://msdn.microsoft.com/en-us/library/ms178472.ASPX

ページの読み込み時にドロップダウンを作成していると思いますが、ポストバックが発生すると、ページ コントロールが初期化される前にドロップダウンから読み取ろうとしています。

onload 関数で IsPostBack を確認し、それが true の場合は、そこでドロップダウンを再構築してみてください。

于 2013-11-12T05:56:05.227 に答える
0

ほとんどの場合、ドロップダウンに項目が 1 つもなく、selecteditem.text を呼び出そうとしています。エラーメッセージを表示します。dropdownlist1 にアイテムがない理由を調べるために、ブレーク ポイントを設定します。

于 2013-11-12T06:18:35.587 に答える
0

行のときにドロップダウンにアイテムがない可能性があるため、発生している可能性があると思います

 string selection = dropdownlist1.selectedItem.text;

実行されます。

その行が実行される前にデータがドロップダウンにバインドされていることを確認するか、このような条件を追加する必要があります。

string selection="";
if(dropdownlist1.items.count>0) 
selection = dropdownlist1.selectedItem.text;
于 2013-11-12T06:02:06.933 に答える