当前位置:编程学习 > C#/ASP.NET >>

我要实现在gridview始终显示10行,即使有效数据不足10行,空的行用√填充

网上看到一个方法:
假设这样一种模型,显示用GridView,数据源用DataSet。每次获取10条信息,按每页10条分页。 
有的时候数据可能不足10条,而客户要求不足10条显示为空行,以下代码解决了这个问题。 
C# codeprivate DataTable FillBlank(int pageSize, DataTable dt)
        {
            if (dt.Rows.Count < pageSize)
            {
                for (int i = dt.Rows.Count - 1; i < pageSize; i++)
                {
                    DataRow dr = dt.NewRow();
                    dt.Rows.Add(dr);
                }
            }
            return dt;
        }

private void BindGrid(DataTable dt)
{
        GridView.DataSource = dt;
        GridView.DataBind();
}
——————————————————————————
我要显示数据的代码:
。。。。。 
           try
            {
                SqlDataAdapter comm = new SqlDataAdapter("select 节次,max(case when 星期='星期一' then 年级+班级+'('+预约人+')' else '√' end) as 星期一,max(case when 星期='星期二' then 年级+班级+'('+预约人+')' else '√' end) as 星期二,max(case when 星期='星期三' then 年级+班级+'('+预约人+')' else '√' end) as 星期三,max(case when 星期='星期四' then 年级+班级+'('+预约人+')' else '√' end) as 星期四,max(case when 星期='星期五' then 年级+班级+'('+预约人+')' else '√' end) as 星期五,max(case when 星期='星期六' then 年级+班级+'('+预约人+')' else '√' end) as 星期六,max(case when 星期='星期日' then 年级+班级+'('+预约人+')' else '√' end) as 星期日 from manage_keji_yuyue where 资源=@resource and 周次=@zhouci and 年度=@niandu group by 节次", conn);
                comm.SelectCommand.Parameters.AddWithValue("@zhouci", DropDownList2.SelectedValue);
                comm.SelectCommand.Parameters.AddWithValue("@niandu", (string)Session["Niandu"]);
                comm.SelectCommand.Parameters.AddWithValue("@resource", (string)ViewState["tag"]);
                conn.Open();
                DataSet ds = new DataSet();
                comm.Fill(ds);
                conn.Close();
                GridView1.DataSource = ds;
                GridView1.DataBind();
                GridView1.Caption = "第" + DropDownList2.SelectedValue + "周〖" + (string)ViewState["tag"] + "〗使用预约表";
            }
            catch { }
。。。。
怎么用呢? --------------------编程问答-------------------- 没接触过 --------------------编程问答--------------------

  protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                SqlDataAdapter comm = new SqlDataAdapter("select   节次,max(case   when   星期= '星期一 '   then   年级+班级+ '( '+预约人+ ') '   else   '√ '   end)   as   星期一,max(case   when   星期= '星期二 '   then   年级+班级+ '( '+预约人+ ') '   else   '√ '   end)   as   星期二,max(case   when   星期= '星期三 '   then   年级+班级+ '( '+预约人+ ') '   else   '√ '   end)   as   星期三,max(case   when   星期= '星期四 '   then   年级+班级+ '( '+预约人+ ') '   else   '√ '   end)   as   星期四,max(case   when   星期= '星期五 '   then   年级+班级+ '( '+预约人+ ') '   else   '√ '   end)   as   星期五,max(case   when   星期= '星期六 '   then   年级+班级+ '( '+预约人+ ') '   else   '√ '   end)   as   星期六,max(case   when   星期= '星期日 '   then   年级+班级+ '( '+预约人+ ') '   else   '√ '   end)   as   星期日   from   manage_keji_yuyue   where   资源=@resource   and   周次=@zhouci   and   年度=@niandu   group   by   节次 ", conn);
                comm.SelectCommand.Parameters.AddWithValue("@zhouci ", DropDownList2.SelectedValue);
                comm.SelectCommand.Parameters.AddWithValue("@niandu ", (string)Session["Niandu "]);
                comm.SelectCommand.Parameters.AddWithValue("@resource ", (string)ViewState["tag "]);
                conn.Open();
                DataSet ds = new DataSet();
                comm.Fill(ds);
                conn.Close();

                GridView1.DataSource = FillBlank(9, ds.Tables[0]);
                GridView1.DataBind();
                GridView1.Caption = "第 " + DropDownList2.SelectedValue + "周〖 " + (string)ViewState["tag "] + "〗使用预约表 ";
            }
            catch { }        
        }

        private DataTable FillBlank(int pageSize,DataTable dt) 
        {
            if(dt.Rows.Count<pageSize)
            {
                for(int i=dt.Rows.Count-1;i<pageSize;i++)
                {
                    string[] results = new string[dt.Columns.Count];
                    for(int j=0;j<results.Length;j++)
                    {
                        results[j] = "√";
                    }
                    dt.Rows.Add(results);
                }
            }
            return dt;
        }
--------------------编程问答-------------------- 谢谢楼上,测试了,我的问题比上面要复杂一些,
以上代码确实能实现:后面的空行显示√,如下图:
节次 星期一 星期二 星期三 星期四 星期五 星期六 星期日 
3 2008级1班(超级用户) √ √ √ √ √ √ 
√ √ √ √ √ √ √ √ 
√ √ √ √ √ √ √ √ 
√ √ √ √ √ √ √ √ 
√ √ √ √ √ √ √ √ 
√ √ √ √ √ √ √ √ 
√ √ √ √ √ √ √ √ 
√ √ √ √ √ √ √ √ 
√ √ √ √ √ √ √ √ 
√ √ √ √ √ √ √ √ 
        

我现在的要求是始终有这样的效果:
节次 星期一 星期二 星期三 星期四 星期五 星期六 星期日 
√ √ √ √ √ √ √ √
√ √ √ √ √ √ √ √
3 2008级1班(超级用户) √ √ √ √ √ √ 
√ √ √ √ √ √ √ √ 
√ √ √ √ √ √ √ √ 
√ √ √ √ √ √ √ √ 
√ √ √ √ √ √ √ √ 
√ √ √ √ √ √ √ √ 
√ √ √ √ √ √ √ √ 
√ √ √ √ √ √ √ √
也就是说第1、2节没有也要填仓√ ,怎么办?
  --------------------编程问答--------------------

 private DataTable FillBlank(int pageSize,DataTable dt) 
        {
            for(int k=0;k<dt.Rows.Count;k++)
            {
                for (int m = 0; m < dt.Columns.Count; m++)
                {
                    if (dt.Rows[k][m].ToString().Trim() == "")
                    {
                        dt.Rows[k][m] = "√";
                    }
                }
                
            }

            if(dt.Rows.Count<pageSize)
            {
                for(int i=dt.Rows.Count-1;i<pageSize;i++)
                {
                    string[] results = new string[dt.Columns.Count];
                    for(int j=0;j<results.Length;j++)
                    {
                        results[j] = "√";
                    }
                    dt.Rows.Add(results);
                }
            }
            return dt;
        }
--------------------编程问答-------------------- 谢谢楼上,测试了,第2个代码和第一个代码效果完全一样! --------------------编程问答-------------------- 下面是我的完整测试代码,符合你的需求;如果是数据源的问题我就没办法了

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.GridView1.DataSource = FillBlank(9, GetTable()).DefaultView;
                this.GridView1.DataBind();
            }
        }

        private DataTable GetTable()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("fff");
            dt.Columns.Add("ggg");

            DataRow dr = dt.NewRow();
            dr["fff"] = "";
            dr["ggg"] = "fdsf";
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr["fff"] = "ff";
            dr["ggg"] = "";
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr["fff"] = "";
            dr["ggg"] = "";
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr["fff"] = "ff";
            dr["ggg"] = "";
            dt.Rows.Add(dr);

            return dt;
        }

        private DataTable FillBlank(int pageSize,DataTable dt) 
        {
            for(int k=0;k<dt.Rows.Count;k++)
            {
                for (int m = 0; m < dt.Columns.Count; m++)
                {
                    if (dt.Rows[k][m].ToString().Trim() == "")
                    {
                        dt.Rows[k][m] = "√";
                    }
                }
            }

            if(dt.Rows.Count<pageSize)
            {
                for(int i=dt.Rows.Count-1;i<pageSize;i++)
                {
                    string[] results = new string[dt.Columns.Count];
                    for(int j=0;j<results.Length;j++)
                    {
                        results[j] = "√";
                    }
                    dt.Rows.Add(results);
                }
            }
            return dt;
        }
--------------------编程问答-------------------- 我知道了,是数据源的问题了,谢谢! --------------------编程问答-------------------- 学习了 --------------------编程问答-------------------- 怎么全是0分呢,我的天! --------------------编程问答-------------------- 关注一下。。。。。 --------------------编程问答-------------------- 提问者yezby20071115 

结帖者yezby20071118 

不0分才怪呢 ........... --------------------编程问答-------------------- 怎么全是0分呢,我的天!
-------------------
提问者yezby20071115   

结帖者yezby20071118   

不0分才怪呢   ...........
-------------------
肚子笑痛了~~~ --------------------编程问答-------------------- 提问者yezby20071115       

结帖者yezby20071118       

不0分才怪呢       ........... 
------------------- 
肚子笑痛了~~~ --------------------编程问答-------------------- td --------------------编程问答-------------------- ………… --------------------编程问答-------------------- LZ你可以这样,比如datatable总的数据是num=46条,你计算出少4条数据。
再在datatable假如4条数据。
for循环假如4叫你想要的数据

这样不就是可以了吗 --------------------编程问答-------------------- 假如改成加入(输入法问题,"假如"总是在第一个)
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,