Объединение двух полей в DataTextField. Это возможно?
У меня есть набор данных, который я привязываю к списку. Однако я хочу объединить два поля для создания DataTextField. Возможно ли это, или мне придется проходить через строки данных?
lstAddressDropdown.DataSource = dsAddress;
lstAddressDropdown.DataTextField = "StreetAddress" + "Place";
lstAddressDropdown.DataBind();
lstAddressDropdown.Items.Insert(0, new ListItem("Please select"));
Стоит отметить, что набор данных возвращается из веб-службы, поэтому я не могу изменить какую-либо хранимую процедуру для объединения столбцов.
Ответы
Ответ 1
Вы можете добавить дополнительный столбец к datatable, который является вычисленным столбцом, и использовать его в качестве поля datatext (docs: привязка к нескольким полям).
Итак, для вашего примера выше вы можете сделать что-то вроде этого:
dsAddress.Tables[0].Columns.Add("StreetAndPlace",typeof(string),"StreetAddress + Place");
lstAddressDropdown.DataSource = dsAddress;
lstAddressDropdown.DataTextField = "StreetAndPlace";
lstAddressDropdown.DataBind();
lstAddressDropdown.Items.Insert(0, new ListItem("Please select"));
Чтобы добавить пробел между StreetAddress и Place, замените строку выражения, показанную выше, на "StreetAddress + ' ' + Place"
Ответ 2
Измените свой запрос согласно вашему требованию
в Oracle
SELECT
'<B>'||SHORTNAME||'</B><br/>('||DEPARTMENT||')' AS USERNAME
FROM TABLE
В приведенном выше запросе имя отобразится жирным шрифтом, и под ним отобразится отдел
как:
<b>Mr. Jagdeep Mankotia</b><br>
(Web Application Development)
Ответ 3
Я знаю, что уже был дан ответ, но я думаю, что есть более простой способ решить эту проблему.
Измените команду выбора и объедините 2 DataTextField, которые хотите отобразить.
DataSource.SelectCommand = "Select (Column1 || ' ' || Column2) As Column1And2 From Table";
RadioButtonList1.DataTextField = "Column1And2";
Надеюсь, это поможет, Может быть, это не лучший способ, но я думаю, что это намного легче понять.
Ответ 4
Вам больше не нужно писать циклы с помощью linq.
-
Создайте класс для возврата двух полей.
открытый частичный класс EmployeeDropdownInfo
{ public int person_id {get; задавать; } public string employee_name {get; задавать; }
}
-
Получите ваши данные и используйте linq для фильтрации и возврата того, что вам нужно.
Список отправителей = (из t в dc.sp_GetEmployees()
выберите новый EmployeeDropdownInfo()
{ person_id = t.person_id, employee_name = t.first_name + "" + t.last_name
}) ToList();.
EmployeeDropdownInfo firstEntry2 = new EmployeeDropdownInfo() {person_id = 0, employee_name = "- Выбрать сотрудника -" };
requestors.Insert(0, firstEntry2);
ddlRequestor.DataSource = requestors;
ddlRequestor.DataTextField = "employee_name";
ddlRequestor.DataValueField = "person_id";
ddlRequestor.DataBind();
Таким образом, вам не нужно менять proc и выпадающие меню, для этого требуется только два значения.