7

DB に、キーと値のペアへの参照を保持するテーブルがいくつかあります。

電話番号の種類:

  • 1 - ホーム
  • 2 - 仕事
  • 3 - モバイル
  • 4 - ファックス

そのため、型のテーブルがあり、それらが他のテーブルで使用されると、int 値が外部キーとして参照されます。それらを引き出しているときはkeyvaluepair<int, string>、それらを使用しているクラスのアイテムとして保管しています。

それらのリストを取得する必要があるとき、同じデータを取得するために 2 つの異なるタイプのデータ型を使用するのではなく、それらの List<> を作成するだけでよいと考えました。

edittemplate ビットを使用しているときに、グリッドビュー内にドロップダウン リストを設定する必要があるときに、問題が発生しました。データソースを使用してこれを引き出すと、値として int を、表示するテキストとして Home を配置するのではなく、テキストに [1 Home] を書き込みます。

私は本当に複数の部分からなる質問があると思います。

1:

私は愚かですか?これは、データを取り出して保存する (キーと値のペアの部分) 本当に悪い方法ですか? すべてをデータテーブルに保存する必要がありますか?すべてをデータテーブルに入れるのは好きではありませんでした。私は自分の DAL を自分の BLL に取り込んでおり、List<>すべてのテーブルではなく、オブジェクトまたはオブジェクトのオブジェクトとしてすべてをカプセル化しようとしました。ほとんどの場合、これでうまくいきました。

二:

ドロップダウン リストの objectdatasource にバインドするためにデータ テーブルではなく何らかのオブジェクトを使用していた場合、リストの最初の項目を選択するだけでなく、現在選択されている値を設定するにはどうすればよいですか?

編集

以下で指摘したように、私は馬鹿で、DataValueField と DataKeyField を設定する必要がありました。

ドロップダウンリストをバインドするには、次のことを行う必要がありました。

SelectedValue='<%# DataBinder.Eval(Container, "DataItem.PhoneType.Key") %>'

すぐにそれが見えなかったのは、私のインテリセンスに表示されていなかったからですが、手動で入力するとうまくいきました。

4

2 に答える 2

31

Dictionary<int, string> を使用し、DropDown DataValueField をKeyに、DataTextField をValueに設定します。

    // A sample dictionary:
    var dictionary = new Dictionary<int, string>();
    dictionary.Add(1, "Home");
    dictionary.Add(2, "Work");
    dictionary.Add(3, "Mobile");
    dictionary.Add(4, "Fax");

    // Binding the dictionary to the DropDownList:
    dropDown.DataTextField = "Value";
    dropDown.DataValueField = "Key";
    dropDown.DataSource = dictionary;  //Dictionary<int, string>
    dropDown.DataBind();
于 2009-01-31T20:58:28.717 に答える
0

そしてその私のカスタムメソッド

// Define enum
public enum ServiceType : int
{
    MinimumService = 1,
    NormalService = 2,
    VipService = 99
}

// custom method to get my custom text name for each enum type
public string GetServiceTypeName(ServiceType serviceType)
{
    string retValue = "";
    switch (serviceType)
    {
        case ServiceType.Print:
            retValue = "We have some services for you";
            break;
        case ServiceType.BookBinding:
            retValue = "We ar glad to meet you";
            break;
        default:
            retValue = "We alywas are ready to make you happy";
            break;
    }
    return retValue;
}

// making dictionary (key and value) for dropdown datasource
public static Dictionary<string, int> GetAllServiceTypeName()
{
    Dictionary<string, int> dataSource = new Dictionary<string, int>();

    foreach (int item in Enum.GetValues(typeof(ServiceType)))
        dataSource.Add(GetServiceTypeName((ServiceType)item), item);

    return dataSource;
}


   // bind the dropdown to dictionary
    ddlServiceType.DataSource = GetAllServiceTypeName();
    ddlServiceType.DataBind();

   // aspx markup code sample
    <asp:DropDownList ID="ddlServiceType" runat="server" 
        DataTextField="Key" DataValueField="Value">
    </asp:DropDownList>
于 2013-11-10T14:59:55.500 に答える