强制Gridview显示包含空行的x行数

时间:2012-09-25 16:22:01

标签: c# asp.net gridview

即使数据小于x行,是否可以强制gridview显示x行数?当然,区别在于空行。

我在尝试谷歌问题时发现了这个页面:http://aspdotnetcodebook.blogspot.ca/2008/03/how-to-force-force-x-number-of-rows-in.html,但对如何使用所提出的解决方案的解释并不多。

谢谢,

2 个答案:

答案 0 :(得分:1)

在将DataSource绑定到GirdView之前,我会检查返回的行数并将空行添加到数据源中。

所以,假设你总是想要10行可见:

var myDataSource = GetDataSource();
if(myDataSource.Count() < MIN_NUMBER_OF_ROWS)
{
    myDataSource.AddRange(GetEmptyRows(MIN_NUMBER_OF_ROWS - myDataSource.Count()));
}
myGridView.DataSource = myDataSource;

然后GetEmptyRows(int numberOfRowsNeeded)返回您需要的空行数。

编辑:假设您的来源属于MyCustomGridRow,其属性为isValid。然后,您可以截取数据绑定的每一行,并根据isValid属性修改GridViewRow(自定义消息,colspan,...)的外观。

protected virtual void myGridView_OnRowDataBound(GridViewRowEventArgs e)
{
     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
     {
         MyCustomGridRow customRow = (MyCustomGridRow)(e.Item.DataItem);

         if (!customRow.isValid)
         {
             int colCount = myGridView.Columns.Count;
             e.Item.Cells.Clear();
             Label lblEmptyMessage = new Label
             {
                 Text = "Custom message for eempty rows.",
                 CssClass = "ErrLabels"
             };
             TableCell newCell = new TableCell
             {
                 ColumnSpan = colCount
             };
             newCell.Controls.Add((Control)lblEmptyMessage);
             e.Item.Cells.Add(newCell);
         }
     }
}

答案 1 :(得分:0)

以下代码执行我要执行的操作:

DataTable dt1 = new DataTable();
DataRow dr1;
dt1.Columns.Add("ProjectID");
dt1.Columns.Add("ProjectName");
dt1.Columns.Add("Country");
for (int i = 0; i < 10; i++)
{
     dr1 = dt1.NewRow();
     dr1["ProjectID"] = dr1["ProjectName"] = dr1["Country"] = "";
     dt1.Rows.Add(dr1);
}
dt1.AcceptChanges();
ProjectListGridView.DataSource = dt1;
ProjectListGridView.DataBind();