3

列の値を使用してドロップダウンに入力しようとしています。問題は、ドロップダウンで実際の値 (India(+61) のような国コード) を取得していないことです。代わりに、ドロップダウンで「System.Data.DataRowView」(複数回)を取得しています。

 public void bind()
 {
    DataSet ds1 = new DataSet();
    SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]);
    con.Open();
    string strQuery = "select CountryCode from AUser";
    SqlCommand cmd = new SqlCommand(strQuery, con);
    using (SqlDataAdapter da = new SqlDataAdapter(cmd))
        da.Fill(ds1, "AUser");
    ddlMobile.DataSource = ds1.Tables["AUser"];
    ddlMobile.DataBind();
    con.Close();
}

で bind メソッドを呼び出していpage_loadます。のデータ型CountryCodevarchar(50)& 値は次のようIndia(+91)になりAustralia(+61)ます...

4

3 に答える 3

11

ドロップダウンのDataValueFieldとプロパティを設定する必要があります。DataTextField

ddlMobile.DataSource = ds1.Tables["AUser"];
ddlMobile.DataValueField = "CountryCode";
ddlMobile.DataTextField = "CountryName";
ddlMobile.DataBind();

ここで、CountryCode と CountryName は、DataRow の値に対応する列名でなければなりません

于 2013-03-20T11:33:02.723 に答える
2

DataRowView.ToString() のデフォルトの実装が何をするかを見ています。DataRow 内から特定のフィールドを選択して表示するには、次のようにします。

ddlMobile.DataSource = ds1.Tables["AllUser"];
ddlMobile.DataTextField = "CountryCode"; // This is text displayed
ddlMobile.DataValueField = "CountryCode"; // This is the value returned
ddlMobile.DataBind();
于 2013-03-20T11:34:02.087 に答える
1

DataTextFieldに を設定していませんDropDownListDataValueField aspx に次のDataTextFieldプロパティを追加することもお勧めします。

<asp:DropDownList ID="ddlMobile" runat="server" 
                  DataTextField="CountryCode"
                  DataValueField="CountryCode" />

他の回答が示すように、コードビハインドで設定することもできます。

それ以外の場合、表示されている動作は、DataBound がToString()情報を表示するために を呼び出しているためです。これは、検索するデータ フィールドが提供されていないためです。

于 2013-03-20T11:35:51.333 に答える