2

データベースから取り込まれるドロップダウン リストがあります。ドロップダウンの DataTextField に名のみを表示したい場合に機能します。しかし、firstname と lastname の 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

カスタム列を定義したいと思うでしょう:

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

次に、その列に直接バインドできます。

CustomerList.DataTextFIeld = "FormattedName";
于 2013-10-22T15:32:40.000 に答える
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 に答える