我在查询中结合了全名和姓氏以形成全名。 这是我的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));