在C#ASP中,是否可以通过编程方式向GridView添加行?
如果可以,怎么实现呢?
我想直接从代码中添加静态数据,而不是从数组或数据源中添加。
DataTable dt = new DataTable();
DataRow dr = dt.NewRow();
dr["Column1"] = string.Empty;
dt.Rows.Add(dr);
您可以将 GridView
绑定到 DataTable
上...
gv.DataSource = dt;
gv.DataBind();
dt.Columns.Add("Column1");
- PouladdataGridView1.Columns[0].Name = "column1";
dataGridView1.Columns[1].Name = "column2";
string[] row1 = new string[] { "column1 value", "column2 value" };
dataGridView1.Rows.Add(row1);
GridViewRowsCollection没有.Add
方法,因此您不能直接将其添加到GridView中。
有替代方案。例如,如果将其绑定到DataTable,则可以向DataTable添加带有数据的自定义行。
另一种替代方案-通过向呈现的HTML表添加行来在客户端执行操作。
可以在 GridView_RowCreated
事件中插入行,例如:
protected void gvItems_RowCreated(object sender, GridViewRowEventArgs e)
{
GridViewRow NewHeader = new GridViewRow(0, 0, DataControlRowType.DataRow, DataControlRowState.Insert);
NewHeader.Font.Bold = true;
NewHeader.CssClass = "heading";
//Item#
TableCell NewHeaderCell = new TableCell();
NewHeaderCell.Text = "#";
NewHeaderCell.HorizontalAlign = HorizontalAlign.Left;
NewHeader.Cells.Add(NewHeaderCell);
//Item#
NewHeaderCell = new TableCell();
NewHeaderCell.Text = "Item#";
NewHeaderCell.HorizontalAlign = HorizontalAlign.Left;
NewHeader.Cells.Add(NewHeaderCell);
//Amount
NewHeaderCell = new TableCell();
NewHeaderCell.Text = "Amount";
NewHeaderCell.HorizontalAlign = HorizontalAlign.Right;
NewHeader.Cells.Add(NewHeaderCell);
GridView1.Controls[0].Controls.AddAt(e.Row.RowIndex +
rowIndex, NewHeader);
}
我仍然建议您使用绑定/数据源,但当然您不必这样做。以下代码应该可以实现您想要的功能:
DataGridViewTextBoxColumn columntype = new DataGridViewTextBoxColumn();
columntype.HeaderText = "Type";
columntype.Width = 80;
dataGridView1.Columns.Add(columntype);
DataTable
),它要复杂得多。使用数据源还可以更轻松地进行分页、排序或编辑。 - Tim Schmelter