3

最近、ドロップダウンリストで作業しているときに、奇妙な問題に遭遇しました。データテーブルをドロップダウンリストにバインドしています。現在、データテーブルには、DataTextFieldに3つの列(Name、Id、Count)が含まれています。名前とカウントを以下のように連結します。

DropDownlist.DataTextField = "Name (Count)";

しかし、私は上記のことを行うことができません、私が上記の目的を達成することができる他の方法はありますか、私はループを使用して連結することで回避策を知っています

DropDownlist.Items.Add();

しかし、DataTextFieldを使用して実行できるかどうかを知りたいです。

4

3 に答える 3

2

データソースにカスタムデータフィールドを作成し、そこで連結を実行できるかどうかを確認できます。たとえば、そのようなもの(キャストや変換が必要になる場合がありますが、うまくいけばアイデアが得られます):

SELECT
Name,
Count,
Id,
Name + ' (' + Count + ')' AS DataField
FROM
TABLE

次に設定します

DropDownlist.DataTextField = "DataField";
于 2011-10-11T20:43:53.720 に答える
1

あなたはこのようにすることができます....私はそれがあなたに役立つことを願っています.....私はデータテーブルにサンプルデータを追加しました、あなたはあなたのデータを使うことができます、

  DataTable table = new DataTable();
        table.Columns.Add("id");
        table.Columns.Add("name");
        table.Columns.Add("count");

        DataRow dr = table.NewRow();
        dr["id"] = "1";
            dr["name"] = "zhang";
            dr["count"] = "6";
            table.Rows.Add(dr);
        DataRow[] rows = new DataRow[table.Rows.Count];

        table.Rows.CopyTo(rows, 0);

            var res = from row in rows
                      select new
                      {
                          id=row["id"].ToString (),
                          namewithcount = row["name"].ToString () +"(" row["count"].ToString ()+")";

                      };

            DropDownList1.DataSource = res;
            DropDownList1.DataTextField = "namewithcount";
            DropDownList1.DataValueField = "id";
            DropDownList1.DataBind();     
于 2011-10-11T21:35:09.403 に答える
0

datatextfield値には列の単一の名前が必要なため、これを試行している方法で行う方法はありません。.Add()メソッドを使用してこれを実行したくない場合は、Nameとcountの連結値を含む別の列と列名を使用してデータテーブルをいつでも再作成できますが、データベースからこのデータテーブルに入力してクエリを変更し、この4番目の列に連結値を含めます。それ以外の場合、Add()メソッドは最善の策のように聞こえます;)

DataTextFieldのいくつかの情報へのリンクは次のとおりです

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.datatextfield(VS.85).aspx

于 2011-10-11T20:59:24.633 に答える