与数据库中的两列值绑定后,如何使下拉菜单中的内容看起来整洁?



我在查询中结合了全名和姓氏以形成全名。 这是我的sql,它适用于这个问题:

SELECT l_name|| ' ' ||f_name AS student_info FROM studentdb;

如何在最长的l_name后腾出空间,使其在下拉菜单中显示两个整洁的列?

填充下拉框中的一个或多个列

您可以根据您的信息和要求应用此代码,这很容易实现

sql = "select " + displaycol + ", " + valcol + " from " + tblName+ " WHERE " + where + " order by " + displaycol;
SqlCommand ObjCommand = new SqlCommand(sql, ObjConnection);
SqlDataAdapter ObjAdapter = new SqlDataAdapter(ObjCommand);
ObjConnection.Open();
ObjAdapter.Fill(DT);
ObjConnection.Close();
ObjCommand.Dispose();
ObjAdapter.Dispose();
cmb.Enabled = false;
cmb.DataTextField = displaycol;
cmb.DataValueField = valcol;
cmb.DataSource = DT;

这有点黑客,但可能是这样的:

select
rpad (l_name, max (length (l_name)) over (partition by 1)) || ' ' || 
f_name
from studentdb

示例输出:

James          Lebron
Gaffigan       Jim
Schwarzenegger Arnold

您可能需要对字体执行一些操作,以确保它显示为固定宽度。

使用format可能有更好的解决方案。

--编辑 9/3/2019 --

一种 C# 方法,假设您有:

class Student
{
public string LastName { get; set; }
public string FirstName { get; set; }
}

这样的东西也可以工作:

int maxLen = students.Select(x => x.LastName.Length).Max() + 1;
students.ForEach(x => x.LastName = x.LastName.PadRight(maxLen));

最新更新