【问题标题】:Dynamically add row to GridView / DataGrid / Repeater?将行动态添加到 GridView/DataGrid/Repeater?
【发布时间】:2011-06-21 12:42:00
【问题描述】:

我想创建一个用户将完成的具有未知行数的“表”。

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

为了实现这一点,我想创建一个包含单行和两列的网格,其中包含用于输入商品名称和价格的文本框:

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

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

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

欢迎任何指点。

编辑

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

【问题讨论】:

    标签: .net gridview datagrid repeater datarow


    【解决方案1】:

    您当然可以使用中继器,但如果您将数据结构标识为网格(例如,意味着您计划或可能计划在未来添加新列),那么 GridView 可能是最好的。

    【讨论】:

    • 有没有办法在运行时向 GridView 添加行?
    【解决方案2】:

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

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

    目前我不确定我会选择哪个。

    【讨论】:

      猜你喜欢
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多