1

page_loadに値のリストを入力するドロップダウンリストがあります。

特定の値を選択したい

Me.DropDownList_LocalOfficeAssignment.SelectedValue = ct.LocalOfficeName
Me.DropDownList_LocalOfficeAssignment has list of values.

問題は次のとおりです。常に最初のアイテムを指しています。

私はこれを試しました

For Each item As ListItem In Me.DropDownList_LocalOfficeAssignment.Items
    If item.Equals(ct.LocalOfficeName) Then
        item.Selected = True
        Exit For
    End If
Next
DV.Dispose()

まだ最初のアイテムを指しています。デバッグしました。最後の項目を指しているはずです。ct.localofficeには、リストの最後の項目が含まれています。これは私がドロップダウンに入力する方法です:

Dim DV As DataView = New DataView(CacheVariable.States.Tables(0))
Dim DRV As DataRowView
Me.DropDownList_LocalOfficeAssignment.Items.Clear()
DV = New DataView(CacheVariable.LocalOffice.Tables(0))
If DV.Count > 0 Then
    For Each DRV In DV
        Me.DropDownList_LocalOfficeAssignment.Items.Add(New ListItem(DRV("Name"), DRV("LocalOfficeID").ToString))
    Next
End If
4

2 に答える 2

0

これは通常、を設定した後に がDropDownList動作するためです。プロパティを設定していますか?ページのライフサイクルの後半で呼び出していますか?DataBind()SelectedValueDropDownList.DataSourceIDDataBind()

于 2012-11-02T14:09:33.473 に答える
0

質問に対する長いコメントに基づいて...

を設定しようとすると、間違った値を探していますSelectedValue。を作成する方法を見てみましょうListItem

Me.DropDownList_LocalOfficeAssignment.Items.Add(New ListItem(DRV("Name"), DRV("LocalOfficeID").ToString))

を作成するListItemときは、表示テキスト基礎となる値の両方を渡します。この場合、次のように設定します。

  • 表示テキスト =DRV("Name")
  • 基礎となる価値 =DRV("LocalOfficeID")

コメントによると、サンプル データは次のようになります。

LocalOfficeID | Name
--------------------
1             | abc
2             | def
3             | xyz

次に、を手動で設定しようとするSelectedValueと、間違った値が渡されます。あなたは本質的にこれをやろうとしています:

DropDownList_LocalOfficeAssignment.SelectedValue = "xyz"

ValueのプロパティはListItemどれもありません"xyz"。それらは"1""2"、および"3"です。を設定するには、次のSelectedValueものが必要です。

DropDownList_LocalOfficeAssignment.SelectedValue = "3"

したがって、この行を変更する必要があります。

Me.DropDownList_LocalOfficeAssignment.SelectedValue = ct.LocalOfficeName

オブジェクトでは、表示名ではなく、オブジェクトの識別子ctを取得する必要があります。おそらく次のようなものです(ただし、何が何であるかを知らなければ、私は確信できません):ct

DropDownList_LocalOfficeAssignment.SelectedValue = ct.ID

識別子がない場合はDropDownList、表示名を検索して見つけることができます。よりエレガントな方法があるかもしれませんが、次のようなものが機能するはずです。

DropDownList_LocalOfficeAssignment.SelectedIndex = DropDownList_LocalOfficeAssignment.Items.IndexOf(DropDownList_LocalOfficeAssignment.Items.FindByText(ct.LocalOfficeName))

ただし、識別子を使用すると、はるかにクリーンになります。

于 2012-11-02T16:33:09.813 に答える