2016-06-16 6 views
0

の下にnullを返します。C#ASP.netのDropDownListは、私はこの配列を持っているIsPostBackプロパティ

string fooChoice = fooDrp.SelectedValue; 

ただし、fooChoiceはnullになります。 私が!IsPostBackを削除した場合、私は最初の値を得るのは、テーブルが再充填されているからです。私は喪失しており、数時間のグーグルグーグルで、情報の90%がちょうど!IsPostBackを使用しています。残りは高度なデータベースリンクです。思考?

編集:私は少し不明であるようです。私はnullを手に入れた場合は扱いたくありません。私はなぜ私がリストで選択した項目の代わりにnullを得ているのかを知りたい。現時点では、私が!IsPostBackを削除した場合、最初の値を除いてリストから何も取得できません。

編集2:多分私はあなたにその話全体を与える必要があります。これは、いくつかのサーバー上のサーバーサービスを監視している起動中のWebページです。これらはテーブルに表示され、これらのサービスを停止および開始するためのボタンがいくつかあります。

私は、とりわけ、すべてのサービスを一度に選択するのではなく、すべてのサーバで特定のサービスを選択して停止/開始できるようにするために、いくつかの機能を追加することが任されています。だから私はこれのためのドロップダウンリストを追加することを決めた。リストが表示され、アイテムを選択してボタンをクリックすることができますが、SelectedValuenullを返すので、クラッシュします。リスト内の項目を選択したにもかかわらず。コードはコピー貼り付けされていますが、読みやすいように名前を変更しました。

+0

選択した値はどこに設定しましたか? – Imad

+0

いいえ、それは必要ですか?リストは常に最初の値から開始します。 – Skillzore

+0

もちろんあります – Imad

答えて

0

ページのinitイベントですべてのポストバックにソースをバインドする必要があります。

protected void Page_Init(object sender, EventArgs e) 
{ 
    // Binding here 
} 

はその後.SelectedValueかのSelectedItemをPage_Loadで、Button_Clickまたは任意のloadイベントで、または後に来る方法をお読みください。

バインドされたデータソースコントロール(たとえば、ページ自体にDataScource)を使用しない場合、コントロールのViewStateは塗りつぶされません。 DataSourceはそれを担当します(例えばキャッシング)。 ViewState値は主にコントロールの状態値です。データがViewStateに保持されていない限り、ページがレンダリングされるたびに、データソースにデータを取り込まなければなりません。これはデータを提供するDataSourceの責任です。

私は間違っている可能性があります、それはASP.NETフォーム以来私にとって長い時間でした。

私が覚えているところは、initの実行中にこのパターンを実行し、ロードイベントの後または後にロジックを実行する限り、WebFormsは簡単なことです。


追加

: 私はあなたが本当にあなたのコード内でコントロールを作成しているが、それのルックスで、ページのコントロールに追加されていない、何匿名」を言っている見落とさ。それをaspx自体に追加してから、それを移入するか、this.Controls.Add(fooBar)またはthis.Page.Controls.Add(fooBar)を使用して追加できるかどうかを調べます。ここでは、これはPageインスタンスを参照する必要があります。

上記と同じ原則が適用されます。がんばろう!

+0

あなたは確かにこれは答えですか? – Imad

+0

ちょっと凝ったかもしれませんか? – Skillzore

+0

これは、私がいくつかの機能を追加するように求められている稼働中のウェブサイトであるということです。私はこれまでに何もしていないし、Googleはこれまでにしか行っていない。私は実際にはテーブル内のすべての行に対して複数のドロップダウンリストを持っています。また、cell.Controls.Add(fooDrp)を使用してテーブルに追加されます。 – Skillzore

0

fooDrp = new DropDownList(); 
       fooDrp.ID = "fooDrp" 
       if (!IsPostBack) 
       { 
        fooDrp.DataSource = fooList; 
        fooDrp.DataBind(); 
       } 
fooDrp.Attributes.Add("name", "fooDrp"); 

しばらくは初期化して、それを読んでみてください。

string value = Request.Form["fooDrp"]; 
+0

もし、私が空の文字列を取得したとしても、ボタンを押したときにクラッシュしないように、コードのリスト項目の1つが必要なので、本当に役立たない。 – Skillzore

+0

@Skillzore更新 – Imad

+0

私はあなたを誤解しているようです。私はnullまたは空の文字列を取得することに興味がありません。私はリストで選択した値を取得したい。オリジナルの投稿の編集を参照してください。 – Skillzore

関連する問題