Как отобразить 2 столбца в combobox
Привет ребята,
Мне было интересно, можно ли показать, например, ID_REPORT и CLIENT_NAME в combobox, как это:
--------------------
1-имя клиента v |
--------------------
Каждый отчет связан с клиентом, и лучший способ идентифицировать отчеты-использовать имя клиента. Многие работники обычно знают отчеты по имени клиента, но у них есть специальный код, и этот код действительно необходим.
Что я уже пробовал:
Я попытался просто изменить displaymember, чтобы использовать оба столбца следующим образом:
cmbReportID.DisplayMember = "ID_REPORT" + "-" + "ИМЯ_КЛИЕНТА"
Richard Deeming
Вероятно, проще всего изменить запрос, чтобы он возвращал объединенное значение в виде вычисляемого столбца, и использовать его в качестве элемента отображения.
Возможно, есть и другие варианты, но вы не сказали нам, какой фреймворк пользовательского интерфейса вы используете. (Windows Forms, WPF, Xamarin, ASP.NET веб-формы, ASP.NET MVC и т. д.)
Scribling Doodle
Я использую Winforms, но поскольку я использую * для выбора всех столбцов, как я могу просто разработать соединение между обоими столбцами? Я также видел некоторые вещи c# на этом форуме,но все они кажутся мне китайскими... Поскольку я новичок в языках программирования.
Richard Deeming
Не используйте SELECT * FROM ...
; просто выберите поля, которые вы действительно хотите.
Scribling Doodle
Например, "SELECT ID-REPORT +" var " + CLIENT_NAME FROM ..."?
Richard Deeming
SELECT ID_REPORT, CLIENT_NAME, Convert(varchar(50), ID_REPORT) + ' - ' + CLIENT_NAME As DisplayName FROM ...
Scribling Doodle
Можете ли вы сказать мне, зачем мне нужно конвертировать ID_REPORT в varchar, если это число автоматического приращения?
Richard Deeming
Потому что вы сочетаете его с CLIENT_NAME
, который (предположительно) является varchar
колонка.
С тех пор как int
тип имеет более высокий приоритет, чем varchar
, если вы попытаетесь их объединить без Преобразуя, SQL попытается преобразовать varchar
к int
, и вы получите ошибку" преобразование не удалось".
Scribling Doodle
Да, я проверил именно это, и это было то, что я придумал. Спасибо за разъяснение. Опубликуйте его как ответ, чтобы я мог принять его ;)