2010-03-09 76 views
0

我需要在我的一个网页上有一个网格,用于输入预算信息。我打算使用gridview,但如果其他想法能更好地满足我的需求,我愿意接受其他想法。我需要以下功能在我的网格:关于gridviews的几个问题

  1. 所有的细胞,一旦在编辑模式下在页面加载
  2. 需要在底部的页脚行 计算总计为特定列

我在gridview中查找了这个功能,但没有任何运气。有关如何在gridview中完成上述两项的任何链接或建议,我们将不胜感激。

注:我使用Visual Studio 2008

回答

0

页脚中的总数可以通过在每个数据更改和表单加载上执行的JavaScript组合应用,并通过GridView的RowDataBound事件动态添加文本框或标签到页脚。例如,

// Create textboxes in footer to hold hours totals 
if (e.Row.RowType == DataControlRowType.Footer) 
{ 
    e.Row.CssClass = "wgv-ft"; 

    for (int i = 0; i < NumHoursTextBoxes; ++i) 
    { 
     var tb = new TextBox(); 
     tb.ID = String.Format("Hours{0}TotalTextBox", i); 
     tb.CssClass = "total"; 
     tb.Enabled = false; 
     e.Row.Cells[FirstHoursTextBoxIndex + i].Controls.Add(tb); 
    } 
} 

而不是使用内置在GridView的报价,你可能只想使用的ItemTemplate并始终显示为可编辑的文本框或其他控件编辑功能(EditItemTemplates)。我使用过这种技术。您仍然可以利用验证器和核心ASP.NET控制集,但是您必须编写相当多的JavaScript来管理总计的更新。

我希望这会有所帮助。祝你好运。

1

IMO你会好得多使用ListView编码这个自己。您可以查看DataBound()和ItemDataBound()事件。 GridView控件不附带内置的功能。

OTOH,马特Dotson有blog post描述如何建立一个GridView在编辑模式中的所有行。

+0

好吧,所以如果我使用ListView方法,我只是有一个项目模板,由每个列的文本框组成?访问这些文本框以将值保存回数据库有多难? – 2010-03-09 19:57:24