我正在创建具有超过20行和列数的动态表格,可根据用户输入更改。第一列是标题,其他列需要使用从Web服务返回的数据进行绑定。并且有几行可以编辑。当用户点击提交按钮时需要验证已更改的单元格并处理数据。 我已经创建了ASP.net表,并逐个添加行和单元格。但这是不可重复使用的方式,是否有任何替代方法来创建左列作为标题的可编辑动态表格?使用左列标题创建动态表格的最佳方法
2
A
回答
1
Here
是做到这一点的一种方法,需要在给定的例子一些定制但可使用的逻辑。
0
如果你想创建客户端的动态可编辑的表,您可能需要使用一些JavaScript框架的工作。那里真的很棒。我最近测试了jQuery的DataTables和jQuery的jqGrid。
1
GridView控件支持自定义HeaderColumn与它的RowHeaderColumn Property。
看一看这个演示页面,看你怎么可能提供允许编辑仅用于某些行:
ASPX:
<asp:GridView ID="GridView1" runat="server" ShowHeader="true"
RowHeaderColumn="Month" AutoGenerateEditButton="True"></asp:GridView>
代码隐藏(对不起,VB.Net,here's转换器如果必要的话)
Public Class GridViewDemo
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
bindSampleData()
End If
End Sub
Private Sub bindSampleData()
Dim rnd As New Random(Date.Now.Millisecond)
Dim data As New DataTable("SampleData")
data.Columns.Add("Month", GetType(String))
data.Columns.Add("Sold", GetType(Double))
data.Columns.Add("Units", GetType(Int32))
For m As Int32 = 1 To 12
Dim row As DataRow = data.NewRow
row("Month") = Globalization.CultureInfo.CurrentCulture.DateTimeFormat().GetMonthName(m)
row("Sold") = 1000 * rnd.Next(1, 10) + rnd.Next(0, 999)
row("Units") = 10 * rnd.Next(1, 10) + rnd.Next(0, 99)
data.Rows.Add(row)
Next
Me.GridView1.DataSource = data
Me.GridView1.DataBind()
End Sub
Private Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim month As String = DirectCast(DirectCast(e.Row.DataItem, DataRowView)("Month"), String)
' don't allow to edit current month's values to demonstrate how to edit certain rows '
If month.Equals(Globalization.CultureInfo.CurrentCulture.DateTimeFormat().GetMonthName(Date.Now.Month)) Then
e.Row.Cells(0).Enabled = False
Else
e.Row.Cells(0).Enabled = True
End If
End If
End Sub
Private Sub GridView1_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GridView1.RowEditing
GridView1.EditIndex = e.NewEditIndex
bindSampleData()
End Sub
Private Sub GridView1_RowCancelingEdit(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCancelEditEventArgs) Handles GridView1.RowCancelingEdit
GridView1.EditIndex = -1
bindSampleData()
End Sub
Private Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GridView1.RowUpdating
Dim records(e.NewValues.Count - 1) As DictionaryEntry
e.NewValues.CopyTo(records, 0)
' Iterate through the array and HTML encode all user-provided values
' before updating the data source.
Dim entry As DictionaryEntry
For Each entry In records
e.NewValues(entry.Key) = Server.HtmlEncode(entry.Value.ToString())
Next
' process the changes, f.e. write it to the database, senseless with my random sample-data '
GridView1.EditIndex = -1
bindSampleData()
End Sub
End Class
+0
嘿蒂姆,很好的例子,但我仍然无法找到一种方法来绑定数据作为我的问题上的更新图像。头是表的第一列,数据流按列逐列,而不像普通的行绑定。 – Damith 2011-02-07 17:35:23
相关问题
- 1. 在css中重新创建动态表格的最佳方法
- 2. 创建动态选择(下拉)列表的最佳方法?
- 3. 创建表的列标题动态
- 4. 使用列表动态创建网格
- 5. 使用shell脚本创建动态数据库表的最佳方法
- 6. 使用Singularity以最小标记构建多列网格的最佳方法
- 7. 使用ASP.NET MVC创建动态Google Sitemap的最佳方式?
- 8. 动态创建输出名称标签的最佳方式是?
- 9. 动态创建一个asp.net页面的最佳方法
- 10. 为字符串创建动态结构的最佳方法?
- 11. CRUD动态创建表的最佳方式是什么?
- 12. 使用动态创建表格创建MySQL表格
- 13. 使用php读取动态表单的最佳方法
- 14. 启动后创建表格后加载我的Sqlite表格的最佳方式
- 15. 从oracle表中动态获取列名的最佳方法
- 16. 使用动态SQL创建表格
- 17. 使用PHP动态创建HTML表格
- 18. 使用AdvancedDatagrid动态创建表格
- 19. 创建接受字段的方法的最佳方法名称列表
- 20. 创建应用程序图标的最佳方法
- 21. 使用动态输入元素列表创建表格
- 22. 有关使用回调创建方法的最佳做法
- 23. 禁用DataGridView中列标题排序的最佳方法
- 24. 在R中使用带有动态列标题的格式表
- 25. 创建JFrame的最佳方法
- 26. javascript:创建类的最佳方法
- 27. 创建数组的最佳方法
- 28. Javascript colorbar - 创建它的最佳方法
- 29. HTML电子表格固定标题和最左边的列
- 30. 使用Text :: Table创建具有动态列数的表格
我在寻找服务器端的替代品。无论如何感谢您的信息。 – Damith 2011-02-07 17:29:54