1

DB から値を取得するデータベース バインド ドロップダウン リストがあります。

ddl.SelectedItem を .Text または .Value のいずれかで呼び出すと、インデックスが正しくありません。

DB テーブルの値が次のようになっているとします。

Column1 | Column2

Dublin1 | Value1
Dublin2 | Value1
Dublin3 | Value1
London1 | Value2
London2 | Value2
London3 | Value2

SQL 選択クエリ:

SELECT [Column1],[Column2] FROM [Table] ORDER BY [Column1]

DDL:

<asp:DropDownList runat="server" ID="ddl" 
 DataSourceID="SQLDataSource" DataTextField="Column1" 
 DataValueField="Column2"></asp:DropDownList>

ASPX のみでのバインド:

<asp:SqlDataSource ID="SQLDataSource" runat="server" 
      ConnectionString="<%$ConnectionStrings:DatabaseConnectionString %>" 
      SelectCommand="SELECT [Column1],[Column2],FROM [Table] ORDER BY [Column1]">
</asp:SqlDataSource>

そのため、Dublin2 と Dublin3 のどちらを選択しても、ドロップダウン リストから Selected Item を取得すると、London の値と同じように、常に Dublin1 が返されます。

ddl は、item.text と item.value の両方に正しく入力されます。

境界に関して設定する必要があるものはありますか?

4

2 に答える 2

2

Page_Load 内の IsPostBack をチェックしていますか。

if (!IsPostBack)
{  
    BindDropDownListddl();      
}

また、ドロップダウン リストの AutoPostBack を true に設定します。

<asp:DropDownList runat="server" ID="ddl" 
 DataSourceID="SQLDataSource" DataTextField="Column1" 
 DataValueField="Column2" AutoPostBack="true" ></asp:DropDownList>
于 2013-04-12T13:17:40.600 に答える
2

Column2ドロップダウンの値は一意でなければならず、値が繰り返されていると思います。Column1テキストと値の両方で使用するようにデータバインドを変更する必要があります。

<asp:DropDownList runat="server" ID="ddl" 
 DataSourceID="SQLDataSource" DataTextField="Column1" 
 DataValueField="Column1"></asp:DropDownList>

コード ビハインド アクセスでは、テーブルのコピーが必要で、次のようにアクセスして値を取得します。

Dictionary<string, string> table = //Get the table here with Column1 as keys    
table[ddl.SelectedItem.Value]
于 2013-04-12T13:51:04.200 に答える