向网格视图添加行

13

在C#ASP中,是否可以通过编程方式向GridView添加行?

如果可以,怎么实现呢?

我想直接从代码中添加静态数据,而不是从数组或数据源中添加。


我相信你可以做到,虽然我不知道它是否在任何ASP页面中进行动态更新。你目前尝试了什么? - XtrmJosh
你是指像页脚那样的吗?我想有一个页脚模板可以做到这一点。 - Tim
你可以使用这个链接来实现,但是相比于使用数据源(例如DataTable),它要复杂得多。使用数据源还可以更轻松地进行分页、排序或编辑。 - Tim Schmelter
5个回答

16
DataTable dt = new DataTable();
DataRow dr = dt.NewRow();
dr["Column1"] = string.Empty;
dt.Rows.Add(dr);

您可以将 GridView 绑定到 DataTable 上...

gv.DataSource = dt;
gv.DataBind();

3
在创建行之前,您可能需要为 DataTable 创建列。dt.Columns.Add("Column1"); - Poulad

5
dataGridView1.Columns[0].Name = "column1";
dataGridView1.Columns[1].Name = "column2";

string[] row1 = new string[] { "column1 value", "column2 value" };
dataGridView1.Rows.Add(row1);

5
在Windows Forms DataGridView中,这个功能运作良好,但在ASP.NET中不行。 - Paul

2

GridViewRowsCollection没有.Add方法,因此您不能直接将其添加到GridView中。

有替代方案。例如,如果将其绑定到DataTable,则可以向DataTable添加带有数据的自定义行。

另一种替代方案-通过向呈现的HTML表添加行来在客户端执行操作。


这似乎是个好点子。创建一个 GridViewRow 并将其附加到 GridView? - XtrmJosh

0

可以在 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);
}

-1

我仍然建议您使用绑定/数据源,但当然您不必这样做。以下代码应该可以实现您想要的功能:

        DataGridViewTextBoxColumn columntype = new DataGridViewTextBoxColumn();
        columntype.HeaderText = "Type";
        columntype.Width = 80;
        dataGridView1.Columns.Add(columntype);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接