我是编程新手,我的问题是我试图在列表框中显示多个项目,这些项目来自本地数据库。我在本地数据库中有一个表用户,其中包含列ID,名字,姓氏,电子邮件和地址。
我已将listBox与我的本地dababase表“Users”绑定在一起,这是我到目前为止所得到的:
private void button_ShowItems_Click(object sender, EventArgs e)
{
var dt = new DataTable();
string connectionString = @"Data Source=MyDatabase;Password=xxxxxx;";
using (var cn = new SqlCeConnection(connectionString))
using (var cmd = new SqlCeCommand("Select * From Users", cn))
{
cn.Open();
using (var reader = cmd.ExecuteReader())
{
dt.Load(reader);
listBox_Users.DataSource = dt;
listBox_users.DisplayMember = "Firstname" + "Lastname";
listBox_Users.ValueMember = "ID";
}
}
}
当我按下按钮时,它只显示“名字”而不是“姓氏”。
我收到了一个带有textBoxes的表单,这些表单将数据输入到本地数据库“Users”中并起作用:
private void button_add_Click(object sender, EventArgs e)
{
var insertSQL = "INSERT INTO Inimesed (Firstname, Lastname, Email, Address) VALUES (Firstname, Lastname, Email, Address)";
string connectionString = @"Data Source=myDatabase;Password=xxxxxx;";
using (var cn = new SqlCeConnection(connectionString))
using (var cmd = new SqlCeCommand(insertSQL, cn))
{
cn.Open();
cmd.Parameters.Add("@Firstname", SqlDbType.NVarChar);
cmd.Parameters.Add("@Lastname", SqlDbType.NVarChar);
cmd.Parameters.Add("@Email", SqlDbType.NVarChar);
cmd.Parameters.Add("@Address", SqlDbType.NVarChar);
cmd.Parameters["Firstname"].Value = textBox1_Firstname.Text;
cmd.Parameters["Lastname"].Value = textBox2_Lastname.Text;
cmd.Parameters["Email"].Value = textBox3_Email.Text;
cmd.Parameters["Address"].Value = textBox4_Address.Text;
cmd.ExecuteNonQuery();
}
}
如果有人知道,我有一个后续问题: 我需要做什么才能使用“名字”+“姓氏”将所选的listBox值添加回文本框?
有很多关于“如何在C#中将textBox项目添加到本地数据库”的教程,但没有“如何将本地数据库项目添加到textBox”。我得到了所有定义的值。 我应该在“foreach”命令中使用“foreach”命令,“if”命令或“if”命令吗?
任何帮助都会很棒!
答案 0 :(得分:1)
无论出于何种原因你都无法绑定连接 - 最好的办法是使用Linq创建一个匿名类型来保存concat本身 - 见下文。
var results = (from row in dt.AsEnumerable()
select new
{
UserID = row.Field<int>("UserPK"),
FirstName = row.Field<string>("FirstName"),
LastName = row.Field<string>("LastName"),
FullName = row.Field<string>("FirstName") + " " + row.Field<string>("LastName")
}).ToList();
listBox1.DataSource = results;
listBox1.DisplayMember = "FullName";
listBox1.ValueMember = "UserID";
Et瞧,正确显示全名。