我想在空的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上运行了此代码。
答案 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将显示您的行。