在网格视图中的行之间添加新行

时间:2010-06-08 20:06:29

标签: asp.net visual-studio-2010 c#-4.0 datagridview

我有一个ASP .net网格视图。它有一些模板列,如命令按钮,文本框和下拉控件。当我单击命令按钮时,需要在当前行下方插入一个新行(从我点击命令按钮的位置)。

如果我有第1行和第2行并且按下第1行中的命令按钮,则需要在第1行和第2行之间插入新行

现在在新行中我应该能够从下拉列表中选择值并在文本框中输入一些值,最后点击我的保存按钮。 (这应该像我期待的那样正常工作)

网格视图绑定到某些数据源,比如说现在是数据表。

我可以想到的是,当单击Command按钮时,我可以在服务器端代码中向数据表添加一个新行并重新绑定网格。但是从UI的角度来看,我不确定如何确保新行正好位于我点击命令按钮的行的下方。

有任何想法或意见吗?

3 个答案:

答案 0 :(得分:0)

您必须通过保存在不可见列中的虚拟索引对数据源进行排序。在第一个数据绑定(也许你因为ots排序功能而采用DataView)它将设置为原始rowindex。首次点击保存按钮后,您将再次从数据库中获取数据表,并在“选定”行之后添加带索引的附加行。然后再使用已排序的DataView绑定GridView。

我认为你需要另一个不可见的列来检测“临时”行。如果您不需要编辑“普通”行,那么您可以使用edititemtemplate。否则,您可以使下拉列表和文本框可见,而其他控件在GridView.OnRoawDataBound中不可见。

答案 1 :(得分:0)

如果您尝试在数据源中添加行然后再次绑定到GridView,我认为更简单的方法。如果您有DataSet或自定义实体集合,这很容易。因为,您正在使用DataTable,这也将起作用。处理click事件并找到用户单击的行。返回dataTable并在那里添加一个空行。这将确保GridView中的控件保持不变,您不必担心添加DropDown控件等。

答案 2 :(得分:0)

有一个代码示例,用于在网格视图中的行之间添加新行

http://www.codeproject.com/Articles/467788/Dynamically-adding-and-deleting-rows-from-ASP-NET