Apr 20, 2009, 11:31 PM
[CLOSED] LINQ + HttpHandler + GridPanel
I'm having problem with my
project using LINQ with Gridapanel for some reason I'm getting Row not found or
changed.
When I delete and try to save I'm getting
this error.
If you can please help me out thank you in
advance
default.aspx
project using LINQ with Gridapanel for some reason I'm getting Row not found or
changed.
When I delete and try to save I'm getting
this error.
If you can please help me out thank you in
advance
default.aspx
<Coolite:Store ID="stoNominees" runat="server" AutoLoad="true" OnRefreshData="OnRefreshData_stoNominees">
<UpdateProxy>
<Coolite:HttpWriteProxy Method="POST" Url="../HttpHandlers/WebManagement/wmNominees_tbl.ashx" />
</UpdateProxy>
<Reader>
<Coolite:JsonReader ReaderID="ID">
<Fields>
<Coolite:RecordField Name="AMAWinner" Type="Boolean"></Coolite:RecordField>
<Coolite:RecordField Name="AMAYear" Type="Int"></Coolite:RecordField>
<Coolite:RecordField Name="Category" Type="String"></Coolite:RecordField>
<Coolite:RecordField Name="Artist" Type="String"></Coolite:RecordField>
<Coolite:RecordField Name="Album" Type="String"></Coolite:RecordField>
<Coolite:RecordField Name="AlbumYear" Type="Int"></Coolite:RecordField>
<Coolite:RecordField Name="Title" Type="String"></Coolite:RecordField>
<Coolite:RecordField Name="Label" Type="String"></Coolite:RecordField>
<Coolite:RecordField Name="Comment" Type="String"></Coolite:RecordField>
</Fields>
</Coolite:JsonReader>
</Reader>
<Listeners>
<LoadException Handler="Ext.Msg.alert('Nominees', e.message || response.statusText);" />
<CommitFailed Handler="Ext.Msg.alert('Error', msg);" />
</Listeners>
</Coolite:Store>
<Coolite:ViewPort ID="WebManagementViewPort" runat="server">
<Body>
<Coolite:FitLayout runat="server">
<Coolite:GridPanel ID="grdNominees" runat="server" StoreID="stoNominees" StripeRows="true" TrackMouseOver="true" AutoExpandColumn="Comment">
<ColumnModel ID="grdNominees_ColumnModel" runat="server">
<Columns>
<Coolite:Column ColumnID="Category" Header="Category" DataIndex="Category" Sortable="true"></Coolite:Column>
<Coolite:Column ColumnID="Artist" Header="Artist" DataIndex="Artist" Sortable="true"></Coolite:Column>
<Coolite:Column ColumnID="Album" Header="Album" DataIndex="Album" Sortable="true"></Coolite:Column>
<Coolite:Column ColumnID="AlbumYear" Header="Album Year" DataIndex="AlbumYear" Sortable="true"></Coolite:Column>
<Coolite:Column ColumnID="Title" Header="Song" DataIndex="Title" Sortable="true"></Coolite:Column>
<Coolite:Column ColumnID="Label" Header="Label" DataIndex="Label" Sortable="true"></Coolite:Column>
<Coolite:Column ColumnID="AMAYear" Header="AMA Year" DataIndex="AMAYear" Sortable="true"></Coolite:Column>
<Coolite:Column ColumnID="AMAWinner" Header="AMA Winner" DataIndex="AMAWinner" Sortable="true"></Coolite:Column>
<Coolite:Column ColumnID="Comment" Header="Comment" DataIndex="Comment" Sortable="true"></Coolite:Column>
</Columns>
</ColumnModel>
<SelectionModel>
<Coolite:RowSelectionModel ID="grdNominees_RowSelectionModel" runat="server">
<Listeners>
<RowSelect Handler="#{btnDelete}.enable();" />
<RowDeselect Handler="if(!#{grdNominees}.hasSelection())
{
#{btnDelete}.disable();
}
" />
</Listeners>
</Coolite:RowSelectionModel>
</SelectionModel>
<View>
<Coolite:GridView ForceFit="true"></Coolite:GridView>
</View>
<TopBar>
<Coolite:Toolbar ID="grdNominees_Toolbar" runat="server">
<Items>
<Coolite:ToolbarButton ID="tbtnAdd" runat="server" Icon="Add" StandOut="true">
<Listeners>
<Click Handler="#{wndNewNominee}.show();" />
</Listeners>
<ToolTips>
<Coolite:ToolTip ID="btnAdd_ToolTip" runat="server" Html="Add User"></Coolite:ToolTip>
</ToolTips>
</Coolite:ToolbarButton>
</Items>
</Coolite:Toolbar>
</TopBar>
<BottomBar>
<Coolite:PagingToolbar ID="grdNominees_PagingToolbar" runat="server" PageSize="20" StoreID="stoNominees" />
</BottomBar>
<Buttons>
<Coolite:Button ID="btnDelete" runat="server" Text="Delete" Icon="Delete" Enabled="false">
<Listeners>
<Click Handler="Ext.Msg.confirm('Delete', 'Are you sure you want to delete selected rows?',
function(btnDeleteConfirm)
{
if(btnDeleteConfirm=='yes')
{
#{grdNominees}.deleteSelected();
}
if(!#{grdNominees}.hasSelection())
{
#{btnDelete}.disable();
}
}
)
"/>
</Listeners>
<ToolTips>
<Coolite:ToolTip ID="btnDelete_ToolTip" runat="server" Html="Delete User"></Coolite:ToolTip>
</ToolTips>
</Coolite:Button>
<Coolite:Button ID="btnSave" runat="server" Text="Save" Icon="Disk">
<Listeners>
<Click Handler="#{grdNominees}.save();" />
</Listeners>
</Coolite:Button>
</Buttons>
<LoadMask ShowMask="true" />
<SaveMask ShowMask="true" />
</Coolite:GridPanel>
</Coolite:FitLayout>
</Body>
</Coolite:ViewPort>
default.aspx.cs
protected void OnRefreshData_stoNominees(object sender, StoreRefreshDataEventArgs e)
{
stoNominees.DataSource = SPs.ProcSelectTblNominees(0).GetDataSet();
stoNominees.DataBind();
}
protected void Page_Load(object sender, EventArgs e)
{
stoNominees.DataSource = SPs.ProcSelectTblNominees(0).GetDataSet();
stoNominees.DataBind();
}
wmNominees_tbl.ashx
namespace HttpHandlers.WebManagement
{
/// <summary>
/// Summary description for $codebehindclassname$
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class wmNominees_tbl : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
var stoHandler = new StoreDataHandler(context);
var ajxResponse = new Response(true);
ConfirmationList confirmationList = stoHandler.BuildConfirmationList("ID");
try
{
var dbContext = new WMDataContext();
ChangeRecords<tblNominee> objData = stoHandler.ObjectData<tblNominee>();
foreach (tblNominee value in objData.Deleted)
{
dbContext.tblNominees.Attach(value);
dbContext.tblNominees.DeleteOnSubmit(value);
confirmationList[value.ID.ToString()].ConfirmRecord();
}
foreach (tblNominee value in objData.Updated)
{
dbContext.tblNominees.Attach(value);
dbContext.Refresh(RefreshMode.KeepCurrentValues, value);
confirmationList[value.ID.ToString()].ConfirmRecord();
}
foreach (tblNominee value in objData.Created)
{
dbContext.tblNominees.InsertOnSubmit(value);
confirmationList[value.ID.ToString()].ConfirmRecord();
}
dbContext.SubmitChanges();
}
catch (Exception e)
{
ajxResponse.Success = false;
ajxResponse.Msg = e.Message;
}
ajxResponse.Write();
}
public bool IsReusable
{
get
{
return false;
}
}
}
}