May 04, 2017, 1:19 PM
Grid Update cell value in database - not working
Any suggestion why this is not working? It reaches the dc.SubmitChanges() in code behind, but the value in database is not updated
The Grid:
The Grid:
public object StatusData
{
get
{
return new object[]
{
new object[] { "Verified"},
new object[] { "Not Verified"}
};
}
}
<ext:GridPanel
ID="FilesGrid"
runat="server"
Title="Files"
Flex="6"
Region="Center"
>
<Tools>
<ext:Tool Type="Refresh" Handler="#{FilesStore}.reload();" ToolTip="Refresh files" />
</Tools>
<Store>
<ext:Store ID="FilesStore" runat="server" OnReadData="FilesStore_ReadData" >
<Model>
<ext:Model runat="server">
<Fields>
<ext:ModelField Name="ID" Type="Int"/>
<ext:ModelField Name="status" />
<ext:ModelField Name="type" />
<ext:ModelField Name="title" Type="String" />
</Fields>
</ext:Model>
</Model>
</ext:Store>
</Store>
<ColumnModel runat="server">
<Columns>
<ext:Column ID="Column3"
runat="server"
Text="ID"
DataIndex="ID"
Flex="1">
<Filter>
<ext:NumberFilter />
</Filter>
</ext:Column>
<ext:Column ID="Column1"
runat="server"
Text="Status"
DataIndex="status"
Flex="1">
<Filter>
<ext:StringFilter />
</Filter>
<Editor>
<ext:ComboBox
ID="cmbStatus"
runat="server"
Editable="false"
DisplayField="status"
ValueField="status">
<Store>
<ext:Store runat="server" Data="<%# StatusData %>" AutoDataBind="true">
<Model>
<ext:Model ID="Model2" runat="server">
<Fields>
<ext:ModelField Name="status" />
</Fields>
</ext:Model>
</Model>
</ext:Store>
</Store>
</ext:ComboBox>
</Editor>
</ext:Column>
<ext:Column
runat="server"
Text="Type"
DataIndex="type"
Flex="1"
>
<Filter>
<ext:StringFilter />
</Filter>
<Editor>
<ext:ComboBox
ID="cmbTypeEd"
runat="server"
Editable="false"
DisplayField="type"
ValueField="type">
<Store>
<ext:Store ID="cmbTypeEdStore" runat="server" OnLoad="cmbTypeEdStore_Load">
<Model>
<ext:Model runat="server">
<Fields>
<ext:ModelField Name="type" />
</Fields>
</ext:Model>
</Model>
</ext:Store>
</Store>
</ext:ComboBox>
</Editor>
</ext:Column>
<ext:Column
runat="server"
Text="Title"
DataIndex="title"
Flex="1">
<Filter>
<ext:StringFilter />
</Filter>
<Editor>
<Ext:TextField runat="server" AllowBlank="False" />
</Editor>
</ext:Column>
</Columns>
</ColumnModel>
<SelectionModel>
<ext:CellSelectionModel ID="CellSelectionModel1" runat="server" />
</SelectionModel>
<Plugins>
<ext:GridFilters ID="GridFilters1" runat="server" />
<ext:CellEditing ID="CellEditing1" runat="server">
<Listeners>
<Edit Fn="edit" />
</Listeners>
</ext:CellEditing>
</Plugins>
</ext:GridPanel>
Edit function:var edit = function (editor, e) {
// Call DirectMethod
if (!(e.value === e.originalValue || (Ext.isDate(e.value) && Ext.Date.isEqual(e.value, e.originalValue)))) {
Fields.Edit(e.record.data.ID, e.field, e.originalValue, e.value, e.record.data);
}
};
Direct Method:[DirectMethod(Namespace = "Fields")]
public void Edit(int id, string field, string oldValue, string newValue, object customer) ///////NOT USED
{
string message = "<b>Property:</b> {0}<br /><b>Field:</b> {1}<br /><b>Old Value:</b> {2}<br /><b>New Value:</b> {3}";
// Send Message...
X.Msg.Notify(new NotificationConfig()
{
Title = "Edit Record #" + id.ToString(),
Html = string.Format(message, id, field, oldValue, newValue),
Width = 250,
Height = 150
}).Show();
DAL.DataContext dc = new DAL.DataContext();
var result =
(from i in dc.TMFFiles
where i.id == id
select i).First();
switch (field){
case "type":
result.Type = newValue;
dc.SubmitChanges();
break;
case "title":
result.Title = newValue;
dc.SubmitChanges();
break;
case "status":
result.Status = newValue;
dc.SubmitChanges();
CartesianStore_ReadData(null, null);
break;
}
}