GridView表格字段显示不同数据库表的数据(如数字转换为对应的文字显示【不同数据库】)

       我们通常会遇到这样一个问题,我们将性别男女,用数字1和2 分别存储在数据库Sex表中,但我们用户看到的应该是“男”“女”,而不是数字1和2。再比如说级别,一个班的班干部有班长、团支书、学习委员等,我们通常可以用数字编号来存储,对应的编号,显示对应的级别名称。同样,一个公司也有很多领导和职工,这种标志性的方法有助于多表查询,便于将多个数据库表联合起来,将信息呈现给用户。同时也便于我们开发人员的代码编写。

那么我们如何将GridView中的该表格的数字转换为对应的文字含义显示出来呢?方法通常有一下两种:

【方法一】如图添加,这里是为了方便显示这个过程。【在GridView中的样式显示处修改】

这个【提交】过程其实就是保存到数据库过程,在前面我们也说过,不再重复。

我们来看看,用户应看到的效果应该如下面所示:

我们在GridView中的级别出显示出来的是相应的班干部职位。

其实我们可以很简单就可以实现这个功能了。只需在RowDataBound()事件中书写GridView样式显示代码即可。

  protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            //自定义序号
            if (e.Row.RowIndex != -1)
            {
                int id = e.Row.RowIndex + 1;
                e.Row.Cells[1].Text = id.ToString();
            }
            //如果是绑定数据行
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
                {
                    ((LinkButton)e.Row.Cells[5].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你确认要删除该信息吗?')");
                }
            }
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                string stateGrade = e.Row.Cells[8].Text.Trim();
                if (stateGrade == "1")
                {
                    e.Row.Cells[8].Text = "班长";
                }
                else if (stateGrade == "2")
                {
                    e.Row.Cells[8].Text = "团支书";
                }
                else if (stateGrade == "3")
                {
                    e.Row.Cells[8].Text = "生活委员";
                }
                else if (stateGrade == "4")
                {
                    e.Row.Cells[8].Text = "安全委员";
                }
                else if (stateGrade == "5")
                {
                    e.Row.Cells[8].Text = "学习委员";
                }
                else if (stateGrade == "6")
                {
                    e.Row.Cells[8].Text = "体育委员";
                }
                else if (stateGrade == "7")
                {
                    e.Row.Cells[8].Text = "组织委员";
                }
                else
                {
                    e.Row.Cells[8].Text = "群众";
                }
            }

        }

【方法二】采用数据库方法进行绑定显示。【不同数据表的数据】

(1)两个数据表如图:两个GradeID号一一对应。在grade表中保存级别的代号gradeID和级别名称gradeName;

在userInfo表中仅存储gradeID号。在查询用户信息时候,我们应该直接通过userInfo表中的gradeID号来进行索引到grade表中的级别名称。

(2)在UI界面我们编辑GridView表格,假设我在这里命名添加一列叫做【数据库级别】,将查询到的内容显示到该列。我独自命名该列的DataField属性为gradeName,如图所示:HeaderText属性为数据库级别:

(3)最终我们的结果如下图所示:

(4)双击【查询】按钮,激活click()事件,书写如下代码:

 protected void Button4_Click(object sender, EventArgs e)//查询用户信息
        {
            BindData();

        }
        protected void BindData()
        {
            DataAccessSQL selectData = new DataAccessSQL();     

            DataSet ds = new DataSet();
            ds = selectData.DataAdapter();
            if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0 && ds != null)
            {

//******************************************************/

//在由于之前的ds数据集只是userInfo表的数据内容,因此我们要手动添加该列内容。方法如下:
                ds.Tables[0].Columns.Add("gradeName", typeof(string)); //gradeName列名和前面编辑模板时候命名一样就可以了
                foreach (DataRow dr in ds.Tables[0].Rows)      //遍历数据集(此时已经包含gradeName列了)
                {
                    if (dr["gradeID"] != DBNull.Value)
                    {
                        dr["gradeName"] = selectData.GradeAdapter(Convert.ToInt32(dr["gradeID"].ToString())); //调用函数返回该gradeID对应的gradeName的值
                    }
                }
                GridView1.DataSource = ds;
                GridView1.DataBind();
            }
            else
            {
                GridView1.DataSource = null;
                GridView1.DataBind();
            }
 
        }

///GradeAdapter(int ID)函数///

public string GradeAdapter(int ID)
        {
            string txtGrade="";
            string strSql = "Data Source=VQJREZV7DVSK2QA;Initial Catalog=gridviewAPP;User ID=sa;Password=admin@123456";
            SqlConnection connew = new SqlConnection(strSql);
            SqlCommand cmd = connew.CreateCommand();
            cmd.CommandText = "select gradeName from gradewhere gradeID='"+ID+"'";
            //创建SqlDataAdapter对象
            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            adapter.Fill(ds);
            if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
            {
                 txtGrade = ds.Tables[0].Rows[0]["gradeName"].ToString();  //选择grade表中gradeName的值
            }
            return txtGrade;
        }

///.DataAdapter();///

 public DataSet DataAdapter()
        {
            string strSql = "Data Source=VQJREZV7DVSK2QA;Initial Catalog=gridviewAPP;User ID=sa;Password=admin@123456";
            SqlConnection connew = new SqlConnection(strSql);
            SqlCommand cmd = connew.CreateCommand();
            cmd.CommandText = "select * from userInfo";
            //创建SqlDataAdapter对象
            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            adapter.Fill(ds);
            return ds;
        }

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值