2

我有一个从数据库填充的下拉列表。当我想在下拉列表的 DataTextField 中只显示名字时,我让它工作。但是如果我想显示 2 个字段,名字和姓氏,那么它会引发错误。为什么这不起作用或我怎样才能让它起作用?

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConString"].ConnectionString);
SqlCommand cmd = new SqlCommand("SELECT * FROM tbl_customers", con);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
con.Open();
da.Fill(ds, "Customers");
CustomerList.DataSource = ds.Tables[0];
CustomerList.DataTextField = "FirstName" + " " + "LastName";
CustomerList.DataValueField = "CID";
CustomerList.DataBind();
4

3 回答 3

5

您必须从数据库中选择“虚拟”列:

string sql = @"SELECT FirstName + ' ' + LastName AS FullName, 
                      CID, FirstName, LastName  
               FROM tbl_customers 
               ORDER BY FullName ASC;"
SqlCommand cmd = new SqlCommand(sql, con);
// ...
CustomerList.DataSource = ds.Tables[0];
CustomerList.DataTextField = "FullName";
CustomerList.DataValueField = "CID";
CustomerList.DataBind();
于 2013-10-22T15:32:27.247 回答
0

您可以在连接等间距的列时使用数据库复制方法。

 string sql = @"SELECT FirstName + replicate(' ', 20 - len(FirstName)) + LastName AS FullName, 
                          CID, FirstName, LastName  
                   FROM tbl_customers 
                   ORDER BY FullName ASC;"
    SqlCommand cmd = new SqlCommand(sql, con);
    CustomerList.DataSource = ds.Tables[0];
CustomerList.DataTextField = "FullName";
CustomerList.DataValueField = "CID";
CustomerList.DataBind();
于 2015-01-30T07:32:55.627 回答
0

您将要定义一个自定义列:

SqlCommand cmd = new SqlCommand("SELECT CID, FirstName + ' ' + LastName AS [FormattedName] FROM tbl_customers", con);

然后您可以直接绑定到该列:

CustomerList.DataTextFIeld = "FormattedName";
于 2013-10-22T15:32:40.000 回答