0

データがx行未満の場合でも、gridviewにx行数を表示させることはできますか?もちろん、違いは空の行で構成されています。

私はこのページを見つけました:http ://aspdotnetcodebook.blogspot.ca/2008/03/how-to-force-force-x-number-of-rows-in.html問題をグーグルしようとしている間、しかし多くの説明がありません提示されたソリューションの使用方法。

ありがとう、

4

2 に答える 2

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);
         }
     }
}
于 2012-09-25T16:26:00.817 に答える
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();
于 2012-10-02T19:00:44.390 に答える