2012-03-23 29 views
11

私はコードの中にデータが入っているドロップダウンリストを持っています。私はDataTextFieldように2つのデータプロパティを表示したいドロップダウンリストDataTextFieldを設定して2つのデータプロパティフィールドを表示するにはどうすればよいですか?

ddlItems.DataTextField = "ItemName"; 

DataTextField属性は、次のコードで設定されています。次のコードを使ってみましたが、うまくいきませんでした。そして、私はネットを研究しましたが、2つのデータプロパティの使い方を見つけることができませんでした。

ddlItems.DataTextField = "ItemName" + "ItemDescription"; 

これを行うにはどのようなコードを使用する必要がありますか?

+0

クリス・センデンの答えは、明らかに最善のアプローチだからです。 – fubo

答えて

6

ddlItemsのFormattingイベントを使用すると、特定の項目を文字列に変換する方法をロジックに設定したり、プログラムで使用する意味がある場合は、名前を返すRepresentingStringなどのプロパティを使用できます+ Descを作成し、そのプロパティにバインドします。より多くの回答やコード例で

同様の質問: Format DropDownList.TextValue

+0

ddlItems.DataTextFormatString = string.Format( "{0}、{1}"、 "ItemName"、 "ItemDescription")を使ってみましたが、ドロップダウンリストに名前と説明を表示すると、 "ItemName、ItemDescription"と表示されます。 – Theomax

+0

string.Format(...)の結果はそれだけであるので、無意味です。私はアイテムが表示のためにテキストに変換されているイベントを聞いて、そのロジックを設定できるようにすることをお勧めします。 – SimpleVar

+0

<%$ %>構文のASPコードで、この単純な作業を優雅に実現できない理由はわかりませんか?なぜaspはこれを許さないのですか?少し失望している。あるいは、方法があり、私たちはまだそれを理解していないでしょうか? –

1

私は前にこれを達成してきましたが、私はそう(項目テンプレートを含むことが可能であった)telerikのradcomboboxを使用しました。テンプレートは単にhtmlテーブルであり、2つのフィールドを一見 '連結'していました。私はかなり標準のasp .netコントロールがこの機能を持っていないことを確信しています - しかし、あなたが周りを見回すなら、あなたはサードパーティコントロールを見つけるでしょう。

ビジネス層でこの連結を処理し、2つのフィールドを1つの文字列として含むプロパティで新しいタイプ(おそらく最高です)を定義することはもちろん可能です。

これを達成する他の方法があることは間違いありませんが、これは私が知ることができるいくつかの方法です。

あなたが好きな、フォーマットされdisplayfield、あなたがそれを可能にする方法を含む新しいデータソースを作るためにLinqToSqlを使用することができます
16

:あなたはできるエンティティフレームワークのコード-最初にコーディングしている場合

var datasource = from x in products 
       select new { 
        x.Id, 
        x.Code, 
        x.Description, 
        DisplayField = String.Format("{0} ({1})", x.Code, x.Description) 
       }; 

comboBox.DataSource = datasource; 
comboBox.DataValueField = "Id"; 
comboBox.DataTextField = "DisplayField"; 
comboBox.DataBind(); 
0

NameAndDescriptionという新しいフィールドを作成し、ddlItems.DataTextField = "NameAndDescription"に設定します。

public String NameAndDescription 
    { 
     get { return this.ItemName + this.ItemDescription; } 
    } 
0

これを試してみてください:

select std.Student_ID,std.Student_Name+' - '+ std.Admission_ID Student_Name 
from Student_tbl std , School_tbl sch 
where sch.School_ID = '" + School_ID + "' and std.Current_Class = '" + Class_ID + "' 
     and std.Section_ID = '" + Section_ID + "' 

DL_Student.DataTextField = "Student_Name"; 
DL_Student.DataValueField = "Student_ID"; 
0

(私はDataColumn.Expressionについて学んだFormat DropDownList.TextValueにコメントからDataColumn.Expression Propertyを起動するので、これがかもしれ有効な解決策を(私の場合は、次のようにフィールドを作成することができますそれは)完璧だった:

DataColumn title = new DataColumn(); 
title.ColumnName = "Title"; 
title.DataType = System.Type.GetType("System.String"); 
title.Expression = "ItemName + ' - ' + ItemDescription"; 
dataTable.Columns.Add(title); 

// Or in one line 

dataTable.Columns.Add(new DataColumn("Title", System.Type.GetType("System.String"), "ItemName + ' - ' + ItemDescription")); 

ddlItems.DataSource = dataTable; 
ddlItems.DataTextField = "Title"; 
ddlItems.DataValueField = "Id"; 
ddlItems.DataBind(); 
0

次のコードは、私の仕事:

select id, ItemName + ' - ' + ItemDescription as 'yournamecolumn' from `yourtable` 
ddlItems.DataTextField = "yournamecolumn"; 
ddlItems.DataValueField = "id"; 
ddlItems.DataBind(); 
1

私はこれに似たことを、C#またはSQLの2つの方法で行っています。

マッテオガッジャーノは、以下のC#の方法の良い例を与える:

dataTable.Columns.Add(new DataColumn("Title", System.Type.GetType("System.String"), "ItemName + ' - ' + ItemDescription")); 

ddlItems.DataSource = dataTable; 
ddlItems.DataTextField = "Title"; 
ddlItems.DataValueField = "Id"; 
ddlItems.DataBind(); 

か、SQLで行うことができる。

SELECT ItemName + ' - ' + ItemDescription AS Title FROM yourSQLtable 

を、次いでC#コードでは上記最後の4行を使用して。

+0

C#の質問に対するあなたの答えの新しい部分は、C#の代わりにSQLを使用できるということですか? – Teepeemm

+0

これはしばらくしています(私はここにメッセージに応答するのに問題がありましたが、これはおそらく私のせいです)。しかし、私はそれがどちらの方法でもできると信じていました。 – Davezilla

1

最も簡単な方法は、.aspxのファイルにあります。

<asp:DropDownList ID="ddlItems" runat="server" DataSourceID="YourDataSource" DataTextField='<%# Eval("Id")+" - "+Eval("Title") %>' ..... /> 

便利願っています。

関連する問題