2012-01-05 8 views
1

DataTableを構築し、国の省略名と国の拡張子を設定します。私はこれをDropDownListコントロールのDataSourceにFormViewの範囲内にします。このFormViewを見るには、ユーザーがフォーム上のボタンをクリックします。 DropDownListには初めてが正しく挿入されます。このFormViewを処理した後(データストアにレコードを追加する)、ユーザーは以前にクリックした同じボタンをクリックして別のレコードを追加する必要がありますが、DropDownListになりません。が入力されていません。私は、このリストを供給しているDataTableが呼び出されるたびにデータテーブルが作成されることを確認しました。もちろん、コードもまったく同じです。.NETのDropDownList FormViewが初めて完全にロードされます。

フォームコードは次のようになります。

<asp:DropDownList ID="lstBornIn" runat="server" /> 

とビハインドのコードは次のようになります。

tblCountry = (DataTable) Session["tblCountry"]; 
DropDownList lstBorn = (DropDownList) 
FormView1.FindControl("lstBornIn"); 
lstBorn.DataSource = tblCountry; 
lstBorn.DataValueField = "Abbrev"; 
lstBorn.DataTextField = "Country"; 
lstBorn.DataBind(); 

述べたように、これは完全に最初の時間を動作しますが、決して再び。後続の呼び出しでItemsリストが空であるため、バインディングの問題があるようです。

提案がありますか?

+1

いつデータをドロップダウンリストにバインドしますか?ボタンをクリックしたメソッドの完全なメソッドを投稿できますか? – Rondel

+0

私が知る限り、大きな変数をSession変数に格納することはお勧めできません。そして、 "tblCountry"は小さいものではないようです。 – aleafonso

+0

それは、私がDataTableを呼び出すたびにチェックして、それは常に67の項目を持っています(国リストを67に制限します)。 –

答えて

1

私はこれをあきらめて、これを解決するために他に何をしたかについて報告したいと思います。

私が見ている問題はVisual Studio内でのみ発生するため、IIS7で関連するファイルを作成して、3つの主要なブラウザで試してみることを考えました。すべて同じように失敗しました。

VSデバッガを使用してリストの1つを見ると、67個のアイテムすべてがきちんと整理されています。それだけでは表示されません。

解決方法は簡単です。リスト項目をASPXファイルにハードコードします。醜く見えますが、うまく動作します。

私は別のアプローチを示唆するものを探しています。

0

ページ、DropDownList、またはDDLの階層内の別のコントロールのViewStateをオフにしていますか?もしそうなら、それを元に戻すか、ポストバックで再バインドする必要があります。

+0

いいえ、ViewStateはオフではありません。上記のコードは、FormViewがインスタンス化されるたびに実行され、その時点でデータテーブルが作成されることが確認されます。 –

関連する問題