是否有一種通用模式將數據保存到數據庫中?如何將Handsontable保存到數據庫
我正在使用ajax和WCF服務從我的數據庫中提取數據來填充表。該服務正在返回表示數據庫表中的一行數據的對象列表。
WCF:
<ServiceContract(Namespace:="")>
<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)>
Public Class TableService
<OperationContract()>
<WebGet(ResponseFormat:=WebMessageFormat.Json)>
Public Function GetResource() As List(Of Resource)
Dim conn = <some connection string>
Dim sql = <some SQL>
Dim dt = New DataTable("foo")
Using da As New SqlDataAdapter(sql, conn)
da.Fill(dt)
End Using
Return Objectify(dt)
End Function
Private Function Objectify(dt As DataTable) As List(Of Resource)
Dim resourceTable = New List(Of Resource)
For Each row As DataRow In dt.Rows
resourceTable.Add(New Resource With {
.ResourceAllocationID = row("ResourceAllocationID"),
.ResourceName = row("ResourceName"),
.AllocationPercent = row("AllocationPercent"),
.Month = row("Month"),
.Year = row("Year"),
.Comments = row("Comments"),
.ProjectID = row("ProjectID"),
.ResourceUId = row("ResourceUId")})
Next
Return resourceTable
End Function
End Class
Public Class Resource
Public Property ResourceAllocationID As Integer
Public Property ResourceName As String
Public Property AllocationPercent As Integer
Public Property Month As String
Get
Return _monthName
End Get
Set(value As String)
Dim intMonth As Integer
If Integer.TryParse(value, intMonth) Then
If [Enum].IsDefined(GetType(MonthName), intMonth) Then
_monthName = CType(value, MonthName).ToString
End If
Else
If [Enum].IsDefined(GetType(MonthName), value) Then
_monthName = value
End If
End If
End Set
End Property
Public Property Year As Integer
Public Property Comments As String
Public Property ProjectID As Integer
Public Property ResourceUId As String
Private _monthName As String
Public Enum MonthName
January = 1
February = 2
March = 3
April = 4
May = 5
June = 6
July = 7
August = 8
September = 9
October = 10
November = 11
December = 12
End Enum
End Class
Javacript:
$("#container").handsontable({
contextMenu: true,
startRows: 1,
minRows: 1,
colHeaders: ['Year', 'Month', 'Name', '% Allocation', 'Comments'],
colWidths: [52, 100, 150, 100, 200],
columns: [
{ data: 'Year', type: 'numeric' },
{ data: 'Month' },
{ data: 'ResourceName' },
{ data: 'AllocationPercent', type: 'numeric' },
{ data: 'Comments' }
]
});
$.ajax({
url: "TableService.svc/GetResource",
type: "GET",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
$("#container").handsontable(loadData, data.d)
},
error: function (error) {
alert("Error: " + error);
}
});
這精美的作品來填充表。我正在努力的是如何將更改保存回數據庫。要求不是保存任何更改,直到所有更改完成並點擊更新按鈕。
我知道我可以通過調用handsontable.getData()
得到一個包含表中所有單元的對象。我在想的是我需要將對象序列化到Json中,將它發送回我的服務,將它反序列化爲對象列表,然後爲列表中的每個對象更新數據庫。我在正確的軌道上嗎?如果是這樣,我該如何實際執行它?
這與我想出的處理從ASP.NET WebForms項目中保存數據的解決方案完全相同。做得好! – itanex 2014-02-22 07:50:59