很多情况例如得到的是编号,需要显示对应其他表的名称
需要显示制单人,审核人名称,
提示:业务员是t_emp_info,制单人和审核人都是同一个表 t_sys_user
//所有获取数据库里 t_sys_user,和T_emp_info表的数据
//调用方法 ygInfo =allInfo("select emp_no as code,emp_name as name from t_emp_info where emp_no <> '0'");//员工信息//operInfo=allInfo("select user_id as code, user_name as name from t_sys_user where user_id <> '0'");//操作员信息
public DataTable allInfo(String Sql)
{
DataTable dtEmpInfo = new DataTable();
try
{
con.Open();
DataSet dsEmpInfo = new DataSet();
//string sqlEmpInfo = "select emp_no,emp_name from t_emp_info";
SqlDataAdapter sdaEmpInfo = new SqlDataAdapter(Sql, con);
sdaEmpInfo.Fill(dsEmpInfo);
dtEmpInfo = dsEmpInfo.Tables[0];
}
catch (Exception ex)
{
MessageBox.Show("empInfo()获取员工资料失败,错误原因"+ex.Message);
}
finally
{
con.Close();
}
return dtEmpInfo;
}
/// <summary>
/// 软件里得到的都是编号,用来显示对应的名称
/// </summary>
/// <param name="dgv"> 用来判断哪个DataGridView需要显示</param>
/// <param name="datatable1">SQL查询数据库得到的数据</param>
/// <param name="dt2">用来判断是显示业务员表的数据还是操作员表的数据</param>
/// <param name="lname">用来判断得到数据库里的数据是业务员还是操作员</param>
/// <param name="type">用来判断是哪个列来显示</param>
public void getName(DataGridView dgv,DataTable datatable1,DataTable dt2,string lname,string type)
{
int row = dgv.Rows.Count;//得到总行数
int row2 = dt2.Rows.Count;//得到总行数
string ywy = "";
string ywy2 = "";
string name = "";
for (int i = 0; i < row; i++)//得到总行数并在之内循环
{
ywy = datatable1.Rows[i][lname].ToString().Trim();
for (int j = 0; j < row2; j++)
{
ywy2 = dt2.Rows[j]["code"].ToString().Trim();
name= dt2.Rows[j]["name"].ToString().Trim();
if (ywy == ywy2)
{
dgv.Rows[i].Cells[type].Value = name;
}
}
}
}
//调用案例
getName(dgvOrderHZ, datatable1, ygInfo, "deal_man", "业务员");
getName(dgvOrderHZ, datatable1, operInfo, "user_id", "制单人");
getName(dgvOrderHZ, datatable1, operInfo, "app_user", "审核人");