添加一行到空GridView?

时间:2011-11-21 13:57:16

标签: c# asp.net

我想在空的gridview中添加一行,我厌倦了以下代码,但到目前为止还没有运气:

        GridViewRow oRow = new GridViewRow(0, 0, DataControlRowType.DataRow, DataControlRowState.Insert);
        TableCell oCell = new TableCell();
        oCell.Text = "XXX";
        oRow.Cells.Add(oCell);
        gvMemberShip.Controls.Add(oRow);

注意:我在Page_Load Event上运行了此代码。

2 个答案:

答案 0 :(得分:2)

我们这样做的方法是扩展GridView。覆盖CreateChildControls,类似于:

public class CustomGridView : GridView
{
    protected override int CreateChildControls(System.Collections.IEnumerable dataSource, bool dataBinding)
    {
        int numRows = base.CreateChildControls(dataSource, dataBinding);
        //no data rows created, create empty table
        if (numRows == 0)
        {
            //create table
            Table table = new Table();
            table.ID = this.ID;

            //create a new header row
            GridViewRow row = base.CreateRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal);

            //convert the exisiting columns into an array and initialize
            DataControlField[] fields = new DataControlField[this.Columns.Count];
            this.Columns.CopyTo(fields, 0);
            this.InitializeRow(row, fields);
            row.TableSection = TableRowSection.TableHeader;
            table.Rows.Add(row);
            this.Controls.Add(table);
        }
        return numRows;
    }
}

当没有要显示的数据时,覆盖GridView的CreateChildControls以向其添加空表。

答案 1 :(得分:0)

您可以使用GridView的DataSource并使用仅包含1个元素的集合进行初始化。 如果你在Page_Load中执行此操作,然后调用DataBind(),GridView将显示您的行。