2009-05-26 12 views
6

を私は(FFG)簡単なドロップダウンリストを持っている...私はonpageloadイベントをusindするためにデータをバインドする 選択した値は、ASPで変更されません:DropDownListコントロール

<asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="true" BackColor="LightSteelBlue" Font-Size="X-Small" 
    OnSelectedIndexChanged="DropDownList2_SelectedIndexChanged1" Style="z-index: 102; left: 37px; position: absolute; top: 85px" Width="331px" 
    </asp:DropDownList> 

...

DropDownList2.DataSource = td.DataSet 
DropDownList2.DataSource = td 
DropDownList2.DataTextField = td.Columns("Name").ColumnName.ToString 
DropDownList2.DataValueField = td.Columns("VendorCode").ColumnName.ToString 
DropDownList2.DataBind() 

とそれは常に最初VALUをもたらし

Protected Sub DropDownList2_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropDownList2.TextChanged 
     Dim url As String = "sp_menu.aspx?sp=" & DropDownList2.SelectedValue 
     Session.Remove("sp") 
     Session("sp") = DropDownList2.SelectedValue 
     Session("spnm") = DropDownList2.SelectedItem.Text & " (" & DropDownList2.Text & ")" 
     Response.Redirect(url) 
    End Sub 

しかし、私はこのような新しい価値を盗んしようonleselectedindexchagedイベント... eドロップダウンリストでどれがクリックされても問題ありません。 助けてください!

+0

コードを書式設定してください。 –

+0

この例が正しい場合、イベントハンドラをDropDownList2_SelectedIndexChanged1に指定しましたが、コードはDropDownList2_TextChangedになっています。間違ったハンドラが呼び出されているか、投稿の入力ミスですか? – Trotts

+0

テキストチャージは私が試していた選択肢でしたが、私のコードはDropDownList2_SelectedIndexChanged1にあります –

答えて

3

あなたは

DropDownList2.SelectedItem.Value 

代わりの

DropDownList2.SelectedItem.Text 
10

[OK]を...いくつかのものを使用しようとすることができます...

まず DropDownList2_TextChangedので、あなたのDropDownListに配線されていませんコードビハインドでワイヤーアップをしていない限り、そのイベントがどのように発生するかはわかりません。

第二

あなたは、このコードはここに

DropDownList2.DataSource = td.DataSet 
DropDownList2.DataSource = td 
DropDownList2.DataTextField = td.Columns("Name").ColumnName.ToString 
DropDownList2.DataValueField = td.Columns("VendorCode").ColumnName.ToString 
DropDownList2.DataBind() 

あなたPageLoadイベントであると言います。 If Not IsPostBack、 にラップしましたか?そうでない場合、毎回リバインドして以前の選択を失うためです。

+0

If IsPostBackではラップしませんでした。なぜなら、アイテムを選択するときに別のページにリダイレクトするからです...それをラップしようとしますあなたに戻ってください。 –

+0

こんにちは。ご助力ありがとうございます。 If Not IsPostBackで包む必要があるようです。今は完璧に動作します。私はイベントが発生しても(ユーザが別のページにリダイレクトされても)ポストバックが起きることに気づいていませんでした。... –

+0

問題はありません。論理的には、選択されたインデックスが変更され、同じページに__doPostBackを使用していくつかのjavascriptが起動されます。 page_loadイベントが発生し、次にSelectedIndexChangedイベントが発生し、次のページにリダイレクトされます。 –

5

Page_Loadでデータバインディングする場合、基本的には選択した項目もリセットしています。

あなたは 場合(!IsPostBackプロパティ)ブロック内のPage_Loadに存在するものは何でもbindingcodeをラップする必要があります。

EDIT:... If Not IsPostBack Then ... VB.NETで終了する

関連する問題