C# 如何将三个字段合并为一个字段并显示在datagridview表中

C# 如何将三个字段合并为一个字段并显示在datagridview表中,c#,winforms,datagridview,C#,Winforms,Datagridview,在我的DataGridView中,我有一个字段作为借款人姓名,我正在使用一个表单收集名字、中间名和姓氏。因此,我希望在我的DataGridView中将名字、中间名和姓氏设置为借款人姓名 我做了这样的事情,现在只显示了名 datagrid_borrowers.Rows[n].Cells[2].Value = item["first_name"].ToString(); 我尝试将项目名称更改为“first\u name+,middle\u name+,last\u name”,但程序中断 我怎样才

在我的
DataGridView
中,我有一个字段作为
借款人姓名
,我正在使用一个表单收集
名字
中间名
姓氏
。因此,我希望在我的
DataGridView
中将
名字
中间名
姓氏
设置为
借款人姓名

我做了这样的事情,现在只显示了名

datagrid_borrowers.Rows[n].Cells[2].Value = item["first_name"].ToString();
我尝试将项目名称更改为
“first\u name+,middle\u name+,last\u name”
,但程序中断

我怎样才能做到这一点?这样我就可以将
名字
中间名
姓氏
值连接为
借款人姓名

以下是我的完整代码:

private void DisplayData()
{
    sda = new MySqlDataAdapter("Select * from user_reg where user_type = 'Member' ",conn);
    dt = new DataTable();
    sda.Fill(dt);
    datagrid_borrowers.Rows.Clear();
    foreach (DataRow item in dt.Rows)
    {
        int n = datagrid_borrowers.Rows.Add();
        datagrid_borrowers.Rows[n].Cells[0].Value = (n + 1).ToString();
        datagrid_borrowers.Rows[n].Cells[1].Value = item["user_id"].ToString();
        datagrid_borrowers.Rows[n].Cells[2].Value = item["first_name"].ToString();
        datagrid_borrowers.Rows[n].Cells[3].Value = item["address"].ToString();
        datagrid_borrowers.Rows[n].Cells[4].Value = item["sex"].ToString();
        datagrid_borrowers.Rows[n].Cells[5].Value = item["nic_number"].ToString();
        datagrid_borrowers.Rows[n].Cells[6].Value = item["contact_number"].ToString();
        datagrid_borrowers.Rows[n].Cells[7].Value = item["email_address"].ToString();
    }
}
试试这个:

datagrid_borrowers.Rows[n].Cells[2].Value = item["first_name"].ToString() 
                                    + " " + item["middle_name"].ToString()
                                    + " " + item["last_name"].ToString();
试试这个:

datagrid_borrowers.Rows[n].Cells[2].Value = item["first_name"].ToString() 
                                    + " " + item["middle_name"].ToString()
                                    + " " + item["last_name"].ToString();

您已经使用数据表适配器从数据库中获取数据,所以结果将是对象的集合

为了访问存储在每个对象中的字段,您应该使用索引器,正如您在本文中看到的,您只需将一个列名传递给该索引器

最简单的方法是使用String.Format,如下所示

datagrid_borrowers.Rows[n].Cells[2].Value = String.Format("{0} {1} {2}",
    item["first_name"].ToString()
    item["Middle_name"].ToString()
    item["Last_name"].ToString()
);

这样,您的代码将更干净、更具可读性。

您已使用数据表适配器从数据库中获取数据,因此结果将是对象的集合

为了访问存储在每个对象中的字段,您应该使用索引器,正如您在本文中看到的,您只需将一个列名传递给该索引器

最简单的方法是使用String.Format,如下所示

datagrid_borrowers.Rows[n].Cells[2].Value = String.Format("{0} {1} {2}",
    item["first_name"].ToString()
    item["Middle_name"].ToString()
    item["Last_name"].ToString()
);

这样,您的代码将更干净、可读性更强。

充分利用数据绑定的强大功能

也使用属性

sda = new MySqlDataAdapter("Select * from user_reg where user_type = 'Member' ",conn);
dt = new DataTable();
sda.Fill(dt);

// Add full_name column with expression.
dt.Columns.Add("Full Name", typeof(string),
    "first_name + ' ' + middle_name + ' ' + last_name");

datagrid_borrowers.DataSource = dt; // data binding

// Hide unnecessary columns.
datagrid_borrowers.Columns["first_name"].Visible = false;
datagrid_borrowers.Columns["middle_name"].Visible = false;
datagrid_borrowers.Columns["last_name"].Visible = false;

请注意,不应在
DataGridView
中手动创建列,请使用数据绑定的全部功能

也使用属性

sda = new MySqlDataAdapter("Select * from user_reg where user_type = 'Member' ",conn);
dt = new DataTable();
sda.Fill(dt);

// Add full_name column with expression.
dt.Columns.Add("Full Name", typeof(string),
    "first_name + ' ' + middle_name + ' ' + last_name");

datagrid_borrowers.DataSource = dt; // data binding

// Hide unnecessary columns.
datagrid_borrowers.Columns["first_name"].Visible = false;
datagrid_borrowers.Columns["middle_name"].Visible = false;
datagrid_borrowers.Columns["last_name"].Visible = false;

请注意,您不应该在
DataGridView

中手动创建列,在sql查询中再添加一个字段(当然,使用正确的字符串连接语法),例如:
Select*,first\u name+middle\u name+last\u name from…
。另外:您可以使用
DataSource
属性(
datagrid\u.DataSource=dt;
)而不是在循环中添加行这是使用
DataGridView
最肮脏的方法。为什么不使用数据绑定?然后,您可以使用更优雅的解决方案来解决这个问题。在sql查询中再添加一个字段(当然,使用正确的字符串连接synatx),例如:
Select*,first\u name+middle\u name+last\u name from…
。另外:您可以使用
DataSource
属性(
datagrid\u.DataSource=dt;
)而不是在循环中添加行这是使用
DataGridView
最肮脏的方法。为什么不使用数据绑定?然后你可以用更优雅的方法解决这个问题。我不知道这个,我会尝试用这个。我真的很喜欢代码。谢谢,我不知道,我会用这个。我真的很喜欢代码。ThanksI将检查@Alexander但为什么我不应该手动创建列?@DilumJayawardhana-因为列是自动创建的。我将检查@Alexander但为什么我不应该手动创建列?@DilumJayawardhana-因为列是自动创建的。