表T_Year中
ID    YEAR
1    1900
2    1901
3    1908
4    1909
......
111    2000
112    2001
113   2005
114   2008假如表T_Year中含有以上数据
现欲在gridview中显示所有的年份(从1900--2008),分10列显示
如在表T_Year中存在则正常显示,如表T_Year中不存在则字体显示为红色请问这个如何实现

解决方案 »

  1.   

    看不懂你的问题,但根据我的猜想可能是用DATATABLE来解决的问题
      

  2.   

    就是年份分10列显示,挨个排下来
    例如:
    1900 1901 1902 1903 1904 1905 1906 1907 1908 1909
    1910......在表T_Year里不存在的话就显示红色
      

  3.   

    如果这样根本没有必要用GridView这样的数据绑定控件,
    数据绑定控件是要和数据源里的值绑定的,如果就是从1900到2008,又何必绑定只要做个循环,逐个判断即可
      

  4.   

    不放在gridview中的话
    放在什么里面好?
      

  5.   

    如果真要放,放到一个panel里就足够了
      

  6.   

    这样的话,使用repeater会好过gridview
      

  7.   

    强烈支持使用Repeater。然后给Repeater写个分页的就更完美了。
      

  8.   

    把数据循环写入到datatable中,再显示出来
      

  9.   


    protected void Button1_Click(object sender, EventArgs e)
        {
            TableRow tr=new TableRow();     
            int i = 0;
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con"].ToString());
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandText = "select * from aa";
            con.Open();
            SqlDataReader sdr = cmd.ExecuteReader();
            while (sdr.Read())
            {
                i = i + 1;
                TableCell tc = new TableCell();
                if (Convert.ToInt32(sdr["yearId"]) != 0)
                {
                    tc.Controls.Add(new LiteralControl(sdr["yearId"].ToString()));
                    tr.Cells.Add(tc);
                    if ((i % 10) == 0)
                    {
                        this.Table1.Rows.Add(tr);
                        tr = new TableRow();
                    }
                }
                else
                {
                    tc.Controls.Add(new LiteralControl("没有数据"));
                    tr.Cells.Add(tc);
                    if ((i % 10) == 0)
                    {
                        this.Table1.Rows.Add(tr);
                        tr = new TableRow();
                    }
                }
            }
            if(i%10 != 0)
            {
                tr=new TableRow();
                this.Table1.Rows.Add(tr);
            }
        }
      

  10.   

    一个datalist 一个datatable, datatable 里面存的就是固定的数据  1900 -2008然后从数据库中读取的放另外一个datatable 中,在datalist 的绑定事件中判断,固定的数据在数据库记录中是否存在,然后以指定的格式显示就可以了
      

  11.   

    何必搞的那么烦呀
    用for循环
    response.write
    先输出table,在tr,在td
    有空的话就给td加背景色为红色 
    每十个输出一个<br />换行
    实在不想就response.write
    就用个label接收
    也行呀
    label+=xxx;
    这样也可以呀
      

  12.   

     <asp:DataList ID="DataList1" runat="server"  RepeatColumns="10" RepeatDirection="Horizontal">
            </asp:DataList></div>用DataList控件很容易实现 "现欲在gridview中显示所有的年份(从1900--2008),分10列显示"不过是在VS2005中 "如在表T_Year中存在则正常显示,如表T_Year中不存在则字体显示为红色" 这个又不知道怎么办....
    --------------------------------------------------------------------------------
    用Grid 显很容易解决 "如在表T_Year中存在则正常显示,如表T_Year中不存在则字体显示为红色"
    <asp:GridView ID="GridView1" runat="server" EmptyDataText="null">
                <EmptyDataRowStyle ForeColor="#C00000" 
    />
            </asp:GridView>
    看来很试试其它方法了.我也是想了很久都想不出来...哎
      

  13.   


      支持14楼的方法,gridview绑定1900-2008的DataTable,设置默认字体颜色为红色在绑定事件中,与另个DataTable(存放着数据库的数据)的记录对比,使其字体变为黑色
      

  14.   

    最好不用那些数据集控件,太大了。用Label        string str = "";
            DataTable dt = pms.SqlHelper.ExecuteDataTable("select year ...");
            for (int i = 1900,j=0; i++; i <= 2008)
            {            
                if (dt.Select("year='" + i + "'").Length == 0)
                {
                    str += " <span class='red'> " + i + " </span> ";
                }
                else
                {
                    str += " <span class='black'> " + i + " </span> ";
                }
                if (j == 9)
                {
                    str += "<br />";
                    j = 0;
                }
                j++;
            }
            Label1.Text = str;