即使数据少于 x 行,是否可以强制 gridview 显示 x 行?当然,差异是用空行弥补的。
我发现这个页面:http ://aspdotnetcodebook.blogspot.ca/2008/03/how-to-force-force-x-number-of-rows-in.html试图用谷歌搜索这个问题但没有太多解释如何使用提出的解决方案。
谢谢,
在将您的 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);
}
}
}
以下代码完成了我想做的事情:
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();