Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在列表框中显示多个本地数据库项?_C#_Database_Textbox_Listbox - Fatal编程技术网

C# 如何在列表框中显示多个本地数据库项?

C# 如何在列表框中显示多个本地数据库项?,c#,database,textbox,listbox,C#,Database,Textbox,Listbox,我是编程新手,我的问题是我试图在一个列表框中显示多个项目,这些项目来自本地数据库。我的本地数据库中有一个表Users,其中包含ID、Firstname、lastname、email和address列 我已经将列表框与我的本地dababase表“Users”绑定在一起,下面是我目前得到的结果: private void button_ShowItems_Click(object sender, EventArgs e) { var dt = new DataTable();

我是编程新手,我的问题是我试图在一个列表框中显示多个项目,这些项目来自本地数据库。我的本地数据库中有一个表Users,其中包含ID、Firstname、lastname、email和address列

我已经将列表框与我的本地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";
            }
        }
    }
当我按下按钮时,它只显示“Firstname”,而不显示“Lastname”

我得到了一个带有文本框的表单,可以将数据输入到本地数据库“用户”中,并且可以工作:

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();

    }
}


如果有人知道,我还有一个后续问题: 要使用“Firstname”+“Lastname”将所选列表框值添加回文本框,我需要做什么

关于“如何在C#中向本地数据库添加textBox项”的教程有很多,但没有“如何向textBox添加本地数据库项”的教程。我定义了所有的值。 我应该在“foreach”命令中使用“foreach”命令、“if”命令还是“if”命令


任何帮助都会很好

无论出于何种原因,您都无法在连接上绑定-最好的办法是使用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";
var results=(来自dt.AsEnumerable()中的行)
选择新的
{
UserID=row.Field(“UserPK”),
FirstName=行字段(“FirstName”),
LastName=行.字段(“LastName”),
全名=行.字段(“名字”)+“”+行.字段(“姓氏”)
}).ToList();
listBox1.DataSource=结果;
listBox1.DisplayMember=“FullName”;
listBox1.ValueMember=“UserID”;

请注意,正确显示全名。

User\T如果此答案没有帮助,请确保您将其标记为答案或注释。非常感谢!