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-因为列是自动创建的。