动态地向GridView / DataGrid / Repeater添加行?

时间:2011-02-04 17:37:32

标签: .net gridview datagrid repeater datarow

我想创建一个用户将完成的“表格”,其中包含未知的行数。

为了说明这一点,我们假设它是在购物之旅后从收据中输入详细信息 - 即行数(或项目)将是未知的。

为了实现这一点,我想创建一个包含单行的网格,以及两个包含文本框的列,以输入项目名称和价格:

  

+ ------- + --------- +
  +项目+价格+
  + ------- + --------- +
  +豆+ 0.99 +
  + ------- + --------- +

然后在第一行完成后,我想动态生成另一行,依此类推。

对此最好的控制是什么?对asp.net来说相当新,所以不确定我是否应该使用Gridview / DataGrid / Repeater或者是什么。 (不确定它是否有任何相关性,但项目texbox与Ajax AutoCompleteExtender相关联。)

任何指针都是最受欢迎的。

修改

我忘记提到的一件事是GridView(或其他)在加载时没有数据绑定到它。不确定这是否会影响决定。

2 个答案:

答案 0 :(得分:2)

GridViews并不擅长内联添加行。你可能不得不做一些有点hacky的事情。您可以在网格视图上设置数据源,以便在实际数据的末尾始终有一个空行,然后只需确保将网格中的最后一行设置为编辑模式每次gridview完成绑定。然后你必须拦截Update动作并使其实际上是Insert而不是更新。然后是你是否也想让用户编辑现有行的问题:当编辑现有行时,你需要消除“空”行,因为你不能同时拥有两个可编辑的行。这很棘手,但你可能会这样做。

另一种方法是使用转发器以只读模式显示所有现有行,然后在最后输出一个可编辑的行。

我不确定此时我会选择哪一个。

答案 1 :(得分:0)

你肯定可以使用转发器但是如果你将数据结构标识为网格(意味着你计划或者可能计划在未来添加新列),那么GridView可能是最好的。