Формат Dropdownlist Для.Текст значение
моя хранимая процедура выглядит так
SELECT Id, StudentName
FROM xyz
у меня есть выпадающий список в asp.net, который я загружаю как:
ddlA.DataSource = // Some source
ddlA.DataTextField = "Id" + " -" + "StudentName";
ddlA.DataValueField = "Id";
ddlA.DataBind();
ddlA.Items.Insert(0, new ListItem(" Select one", "0"));
а в Databind()
заявление, я получаю эту ошибку:
7 ответов
DropDownList1.DataTextFormatString = "{0} - {1}";
DropDownList1.DataTextField = "Id,StudentName";
кажется, что это не достижимо автоматически, например, см. этот билет MS Connect.
таким образом, сделайте это программно:
foreach (var row in table.Rows)
{
row.Field<string>("text") = String.Format(..);
}
или
foreach (var item in data)
{
new ListItem { Text = String.Format(..); };
}
вы можете использовать LINQ для создания нового источника данных, содержащего displayfield, который отформатирован так, как вы хотите, например:
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();
вы можете достичь этого, следуя коду
dsStudent.Tables[0].Columns.Add("IdWithStudenName",typeof(string),"Id + ' - ' + StudenName");
DropDownList1.DataSource = dsStudent;
DropDownList1.DataTextField = "IdWithStudenName";
DropDownList1.DataBind();
DropDownList1.Items.Insert(0, new ListItem("Please select"));
для большего понимания обратитесь здесь.
если источник данных является DataTable, вы можете добавить "выражение" (вычисляемый столбец) в таблицу. Выражение для нового столбца будет выглядеть следующим образом:
newcolumn.Expression = "Id + ' - ' + StudentName";
вы можете изменить хранимую процедуру на:
SELECT Id, Id + " - " StudentName as Text FROM xyz
и измените привязку на:
ddlA.DataSource = // Some source
ddlA.DataTextField = "Text"
ddlA.DataValueField = "Id";
ddlA.DataBind();
ddlA.Items.Insert(0, new ListItem(" Select one", "0"));
Если у вас есть список классов для заполнения выпадающего списка, это, вероятно, лучше всего сделать;
List<FOO> foo = new List<FOO>();
ddlFoo.DataSource = foo.Select(x =>
new ListItem { Text = x.Text1 + " - " + x.Text2, Value = x.Id.ToString() });
ddlFoo.DataBind();
это очень просто, только у вас есть поля concat в запросе
SELECT Id ,Id || ' ' || StudentName ""TEXT"",
FROM xyz
затем вы создаете выпадающий список
ddlA.DataSource = // Some source
ddlA.DataTextField = "TEXT";
ddlA.DataValueField = "Id";
ddlA.DataBind();
ddlA.Items.Insert(0, new ListItem(" Select one", "0"));