Gridview新行

时间:2011-05-16 03:24:45

标签: c# asp.net

我有一个包含5列的Gridview,其中最后三列是Item Templates中的一个文本框。第一列由数字1,2,3 ......等组成,我从数据源绑定。当我在文本框的最后一列中输入文本时,对于特定的行,我需要在该文本框的textchanged事件的该行下面添加一个新行。此行的第一列值也应具有1A,1B等扩展名。像这样我需要它在其他行也可能...... plz真的可以使用帮助!!!还请将语言保留在C#中。

新的行部分和扩展部分对我来说是问题.....其余的我能做到!!!

谢谢

1 个答案:

答案 0 :(得分:1)

您需要执行以下操作:

  1. 您需要在回发之间保留绑定到Gridview的DataTable。我建议将其存储在会话状态中。

    会话(PageID +“MainDT”)= MyDataTable;

  2. 处理文本框文本更改事件

  3. 在事件处理程序中,您希望从会话中加载数据表

    DataTable MainDT =(DataTable)会话(PageID +“MainDT”);

  4. 然后,您需要构建一个新的数据行。将所需的值放入此新行中。如何使用与主DataTable匹配的模式创建新的数据行?像这样:

    DataRow DR = DT.NewRow(); //将DataTable的架构复制到新行

  5. 然后,将该行插入主数据表中的正确位置

  6. 您如何知道要插入哪一行?它将是gridview的EditIndex + 1

    DT.Rows.InsertAt(MyRow, RowToInsertAt);
    

    最后,您需要重新绑定Gridview

    MyGridView.DataSource = MyDataTable;
    MyGridView.DataBind()
    

    注意 - 您需要显示1A或1B的列(通常是数字)需要基于varchar / text字段。因此,您可能希望为您的主DataTable提供的SQL在其Select语句中快速转换(varchar(55),MyNumber)作为MyNumber。这样,当您填充额外的DataRow(见上文)时,您可以将一个字符串打到与MyNumber关联的列中。

    Note2 - 通常在这些情况下,我会添加一个“+”图标。按下时,将使用嵌套的gridview,repeater或datalist代替自定义行。我发现以上述方式将额外的行阻塞到Gridview中很难维护,而嵌套的gridviews或datalists一旦完成它就不会太糟糕。

    对不起,如果语法有点傻,我住在VB.NET世界。