首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

gridview控件显示数据库有关问题,

2012-12-17 
gridview控件显示数据库问题,急!小弟在vs中调式了下,将gridview显示数据库表中一列数据,OK.不过我想实现身

gridview控件显示数据库问题,急!
小弟在vs中调式了下,将gridview显示数据库表中一列数据,OK.
不过我想实现身份证后5-2位用xxxx来代替原来数字
在text中  string sSql = "select * from pass ";
          sSql = Regex.Replace(sSql, @"^(\d+)\d{4}([Xx0-9])$", "$1XXXX$2");
          TextBox1.Text = sSql.ToString();

是可行的,

不过换到gridview中,如何操作啊,代码如下

在page_load中
      //先连接数据库
        SqlConnection con = new SqlConnection();
        con.ConnectionString = @"server=xxxx;database=xxxx;user id=xxxx;password=xxxx;";
        con.Open();
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
//选取数据库表内容
        cmd.CommandText = "select emp_id from id ";

//使用dataadapter,设置dataset
        SqlDataAdapter sda = new SqlDataAdapter();
        sda.SelectCommand = cmd;
       
        DataSet ds = new DataSet();
        sda.Fill(ds, "id");
        con.Close();

        DataTable dt = ds.Tables["id"];
        
//gridview设置datasource
        GridView1.DataSource = dt;
        GridView1.DataBind();

以上代码成功导入sql数据到gridview中,
我想实现开头的功能,便将橙色语句改成
  string sSql = "select emp_id from id ";
  sSql = Regex.Replace(sSql, @"^(\d+)\d{4}([Xx0-9])$", "$1XXXX$2");
  cmd.CommandText = sSql.ToString();

身份证还是原样显示,
求大神指点,gridview如何replace,我已经using text.regularexpressions了。

 sSql = Regex.Replace(sSql, @"^(\d+)\d{4}([Xx0-9])$", "$1XXXX$2");
此代码在text中可以让后2-5位以xxxx显示.

[最优解释]
protected void gridview_RowDataBound(object sender, GridViewRowEventArgs e)
{        
if (e.Row.RowType == DataControlRowType.DataRow)        
{             
e.Row.Cells[身份证所在列].Text = Regex.Replace(e.Row.Cells[身份证所在列].Text, @"^(\d+)\d{4}([Xx0-9])$", "$1XXXX$2");
}
}
[其他解释]
自己顶啊啊啊暗暗啊
[其他解释]
求大神出现啊
[其他解释]
你用正则替换sql语句有啥用,应该替换查询结果
[其他解释]

引用:
protected void gridview_RowDataBound(object sender, GridViewRowEventArgs e)
{        
if (e.Row.RowType == DataControlRowType.DataRow)        


{             
e.Row.Cells[身份证所在列].Text ……



这位大哥,  e.Row.Cells[身份证所在列].Text    身份证所在列怎么写啊,row.cells具体怎么弄?
[其他解释]
..比如你身份证是在第六列显示,就是cells[5]么
[其他解释]
引用:
..比如你身份证是在第六列显示,就是cells[5]么



我只显示一列是cells[0]么?不过还是不行呢

 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.Cells[0].Text = Regex.Replace(e.Row.Cells[0].Text, @"^(\d+)\d{4}([Xx0-9])$", "$1XXXX$2");
        }
    } 

改成gridview id了 是GridView1,关键是不报错..不知道错在哪...是不是 databound有问题?
[其他解释]
  e.Row.Cells[0].Text ->   e.Row.Cells[0].Value
[其他解释]
e.Row.Cells[0].Text = Regex.Replace(e.Row.Cells[0].Text, @"^(\d+)\d{4}([Xx0-9])$", "$1XXXX$2").ToString();

断点调试一下,看e.Row.Cells[0].Text值是什么
[其他解释]
引用:
e.Row.Cells[0].Text = Regex.Replace(e.Row.Cells[0].Text, @"^(\d+)\d{4}([Xx0-9])$", "$1XXXX$2").ToString();

断点调试一下,看e.Row.Cells[0].Text值是什么


根本就没有命中断点啊。。。这代码就没有经过。什么情况啊。。。。。。。。。
[其他解释]
还有什么别的方法没
[其他解释]
最后调式出来了。


RowDataBound事件 在创建gridView控件时,必须先为GridView的每一行创建一个GridViewRow对象,创建每一行时,将引发一个RowCreated事件;当行创建完毕,每一行GridViewRow就要绑定数据源中的数据,当绑定完成后,将引发RowDataBound事件。如果说我们可以利用RowCreated事件来控制每一行绑定的控件,那么我们同样可以利用RowDataBound事件来控制每一行绑定的数据

先要在事件项中创建一个rowcreated事件,就是这个GridView1_RowDataBound,然后才有rowdatabound事件。

谢谢大老虎了。结贴了

热点排行