I have a grid that contains a detail table for each record. Inside the detail table I have two commands. I handle the
ItemCommand event, in which I execute a stored procedure depending on the command name and argument. So far so good. The issue is I can't seem to find a way to rebind the detail table, so when the page refreshes for the user they see the results. I have tried various things, but none seem to work. If I click refresh on the detail table then the detail table collapses. (Note: I need to try as hard as possible to do this via a stored procedure - there is auditing code, etc. inside of it).
Any help would be greatly appriciated.
Thanks,
Kent
switch (e.CommandName) | |
{ | |
case "terminate" : | |
db = new CasprDataContext(); | |
mgrRoleID = int.Parse(e.CommandArgument.ToString()); | |
//TEST ONE: | |
//mgrRole = db.EICPMgrRoles.Single(mr => mr.MgrRoleGID == mgrRoleID); | |
//mgrRole.RoleEndDate = DateTime.Now; | |
//db.SubmitChanges(); | |
//TEST TWO (preferred): | |
//execute stored procedure | |
db.sp_UpdateManagerRole_End(mgrRoleID); | |
//TEST TWO-A: | |
//Rebind the details table | |
//dataItem.DataBind(); | |
//TEST TWO-B: | |
managersGrid.MasterTableView.DetailTables[0].Rebind(); | |
break; | |
case "restore" : | |
db = new CasprDataContext(); | |
mgrRoleID = int.Parse(e.CommandArgument.ToString()); | |
//TEST ONE: | |
//mgrRole = db.EICPMgrRoles.Single(mr => mr.MgrRoleGID == mgrRoleID); | |
//mgrRole.RoleEndDate = null; | |
//db.SubmitChanges(); | |
//TEST TWO (preferred): | |
//execute stored procedure | |
db.sp_UpdateManagerRole_Restore(mgrRoleID); | |
//TEST TWO-A: | |
//Rebind the details table | |
//dataItem.DataBind(); | |
//TEST TWO-B: | |
managersGrid.MasterTableView.DetailTables[0].Rebind(); | |
break; | |
} |
<DetailTables> | |
<telerik:GridTableView DataKeyNames="MgrFID" DataSourceID="managerRolesDataSource" AllowFilteringByColumn="false" CommandItemDisplay="Bottom" EditFormSettings-ColumnNumber="2"> | |
<ParentTableRelation> | |
<telerik:GridRelationFields MasterKeyField="MgrGID" DetailKeyField="MgrFID" /> | |
</ParentTableRelation> | |
<Columns> | |
<telerik:GridBoundColumn DataField="MgrRoleGID" DataType="System.Int32" ReadOnly="true" Visible="false" | |
HeaderText="MgrRoleGID" SortExpression="MgrRoleGID" UniqueName="MgrRoleGID"> | |
</telerik:GridBoundColumn> | |
<telerik:GridBoundColumn DataField="MgrFID" DataType="System.Int32" Visible="false" | |
HeaderText="MgrFID" ReadOnly="True" SortExpression="MgrFID" UniqueName="MgrFID"> | |
</telerik:GridBoundColumn> | |
<telerik:GridDropDownColumn DataField="RoleFID" DataType="System.Int32" | |
DataSourceID="rolesDataSource" ListTextField="RoleDesc" ListValueField="RoleGID" | |
HeaderText="Role" SortExpression="RoleFID" | |
UniqueName="RoleFID"> | |
</telerik:GridDropDownColumn> | |
<telerik:GridDropDownColumn DataField="RegionFID" DataType="System.Int32" EditFormColumnIndex="1" | |
DataSourceID="regionsDataSource" ListTextField="RegionDesc" ListValueField="RegionGID" | |
HeaderText="Region" SortExpression="RegionFID" | |
UniqueName="RegionFID"> | |
</telerik:GridDropDownColumn> | |
<telerik:GridBoundColumn DataField="RoleStartDate" DataType="System.DateTime" | |
HeaderText="Start Date" SortExpression="RoleStartDate" ReadOnly="true" | |
UniqueName="RoleStartDate"> | |
</telerik:GridBoundColumn> | |
<telerik:GridBoundColumn DataField="RoleEndDate" DataType="System.DateTime" ReadOnly="true" | |
HeaderText="End Date" SortExpression="RoleEndDate" UniqueName="RoleEndDate"> | |
</telerik:GridBoundColumn> | |
<telerik:GridTemplateColumn UniqueName="actions"> | |
<ItemTemplate> | |
<asp:LinkButton runat="server" CommandName="terminate" CommandArgument='<%# Eval("MgrRoleGID") %>' Visible='<%# Eval("RoleEndDate") == null ? true : false %>'>Terminate</asp:LinkButton> | |
<asp:LinkButton runat="server" CommandName="restore" CommandArgument='<%# Eval("MgrRoleGID") %>' Visible='<%# Eval("RoleEndDate") == null ? false : true %>'>Restore</asp:LinkButton> | |
</ItemTemplate> | |
</telerik:GridTemplateColumn> | |
</Columns> | |
</telerik:GridTableView> | |
</DetailTables> |
<asp:LinqDataSource ID="managersDataSource" runat="server" | |
ContextTypeName="Caspr.CasprDataContext" OrderBy="MgrLastName, MgrFirstName" | |
TableName="EICPMgrs" EnableInsert="True" EnableUpdate="True"> | |
</asp:LinqDataSource> | |
<asp:LinqDataSource ID="managerRolesDataSource" runat="server" | |
ContextTypeName="Caspr.CasprDataContext" TableName="EICPMgrRoles" | |
Where="MgrFID == @MgrFID" EnableInsert="True" | |
oninserting="managerRolesDataSource_Inserting"> | |
<WhereParameters> | |
<asp:SessionParameter Name="MgrFID" Type="Int32" SessionField="MgrFID" DefaultValue="0" /> | |
</WhereParameters> | |
</asp:LinqDataSource> | |
<asp:LinqDataSource ID="rolesDataSource" runat="server" | |
ContextTypeName="Caspr.CasprDataContext" OrderBy="RoleDesc" | |
Select="new (RoleDesc, RoleGID)" TableName="EICPRoles"> | |
</asp:LinqDataSource> | |
<asp:LinqDataSource ID="regionsDataSource" runat="server" | |
ContextTypeName="Caspr.CasprDataContext" OrderBy="RegionDesc" | |
Select="new (RegionGID, RegionDesc)" TableName="EICPRegions"> | |
</asp:LinqDataSource> | |