none
asp.net 数据库显示的问题 RRS feed

  • 问题

  •         OleDbConnection con = YEYHDB.createDB();//调用用户自定义的DB类的createDB()的方法
            OleDbCommand cmd = new OleDbCommand();//声明一个OleDbCommand的对象,并将该对象cmd实例化
            cmd.Connection = con;
            con.Open();//打开数据库连接
            OleDbDataAdapter sda = new OleDbDataAdapter("select * from mydb order by mlevel desc,tl desc", con);//从新闻表tb_xinwen按发布时间fabushijian的降序排序
            DataSet ds = new DataSet();//声明一个DataSet的对象,并将该对象ds实例化
            sda.Fill(ds, "dzhhq");//将新闻表tb_xinwen填充到数据库中
            this.gvXw.DataSource = ds;
            //this.gvXw.DataKeyNames = new string[]{ "名称" };
            this.gvXw.DataKeyNames = new string[] { "名称" };
            this.gvXw.DataBind();//将数据绑定到GridView控件中

    GridView控件中, 我想分颜色显示里面的内容,比方说 "select * from mydb where score<60" 里面所有结果集都显示为红色,怎么

    用代码实现?

     


    2012年1月13日 11:59

答案

  • Step 1.您要先把GridView该列转为TemplateField

    Step 2.在GridView的RowDataBound事件中用e.Row.FindControl("控件id"); 抓出控件(假设您抓的是Label控件)
    ex:

    Label label = (Label)e.Row.FindControl("控件id");

    Step 3.判断该控件的值小于60的话,就给红色

    if(Convert.ToInt32(label.Text)<60)

    {

     label.Text = "<span style='color:red'>" + label.Text + "</span>";

    }



    2012年1月13日 12:10
  • Gridview無法直接依照結果集的值來改變字形顏色,不過你可以在GridView的RowDataBound事件中自行判斷目前要繫結的資料,是否符合你想變顏色的規則。

    以下程式碼示範若Amount小於5000時,將該BoundField的前景色設定為紅色。

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
    	if (e.Row.RowType == DataControlRowType.DataRow)
    	{
    		if (Convert.ToInt32(DataBinder.Eval(e.Row.DataItem,"Amount")) < 5000)
    		{
    			e.Row.Cells[1].ForeColor = System.Drawing.Color.Red;
    		}
    	}
    }
    


    執行結果:


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    • 已标记为答案 Honny_yeyh 2012年1月14日 10:44
    2012年1月13日 15:01
  • 谢谢楼上的回复,我想整行都变颜色,不知道怎么弄。


     e.Row.ForeColor = Drawing.Color.Red
    • 已标记为答案 Honny_yeyh 2012年1月14日 10:44
    2012年1月14日 7:33

全部回复

  • Step 1.您要先把GridView该列转为TemplateField

    Step 2.在GridView的RowDataBound事件中用e.Row.FindControl("控件id"); 抓出控件(假设您抓的是Label控件)
    ex:

    Label label = (Label)e.Row.FindControl("控件id");

    Step 3.判断该控件的值小于60的话,就给红色

    if(Convert.ToInt32(label.Text)<60)

    {

     label.Text = "<span style='color:red'>" + label.Text + "</span>";

    }



    2012年1月13日 12:10
  • Gridview無法直接依照結果集的值來改變字形顏色,不過你可以在GridView的RowDataBound事件中自行判斷目前要繫結的資料,是否符合你想變顏色的規則。

    以下程式碼示範若Amount小於5000時,將該BoundField的前景色設定為紅色。

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
    	if (e.Row.RowType == DataControlRowType.DataRow)
    	{
    		if (Convert.ToInt32(DataBinder.Eval(e.Row.DataItem,"Amount")) < 5000)
    		{
    			e.Row.Cells[1].ForeColor = System.Drawing.Color.Red;
    		}
    	}
    }
    


    執行結果:


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    • 已标记为答案 Honny_yeyh 2012年1月14日 10:44
    2012年1月13日 15:01
  • 谢谢楼上的回复,我想整行都变颜色,不知道怎么弄。

    2012年1月14日 5:14
  • 谢谢楼上的回复,我想整行都变颜色,不知道怎么弄。


     e.Row.ForeColor = Drawing.Color.Red
    • 已标记为答案 Honny_yeyh 2012年1月14日 10:44
    2012年1月14日 7:33