LinqToSQL Bound Automatic Update

3 posts, 0 answers
  1. Oliver
    Oliver avatar
    6 posts
    Member since:
    Jun 2017

    Posted 13 Jul 2017 Link to this post

    So, I have a hierarchical Radgrid bound to two LinqToSQL Datasources, and I'm trying to get Updates working on the second level table. Inserts work perfectly but when attempting to update a row, I get an "Object Reference not set to an instance of an object" exception, but it doesn't cause any error to be displayed on the page. I can only see the error through Visual Studio while debugging. See ASPX code below. I have no code doing anything in the codebehind so far.

    05.<asp:UpdatePanel ID="upGrid" runat="server" ChildrenAsTriggers="true">
    06.<ContentTemplate>
    07.<telerik:RadGrid ID="masterGrid" runat="server"
    08.AutoGenerateColumns="False"
    09.DataSourceID="linqDepots"
    10.OnUpdateCommand="masterGrid_UpdateCommand">
    11.<ClientSettings>
    12.<Selecting AllowRowSelect="true" />
    13.</ClientSettings>
    14.<GroupingSettings CollapseAllTooltip="Collapse all groups" />
    15.<MasterTableView DataSourceID="linqDepots" DataKeyNames="dID,dCode">
    16.<Columns>
    17.<telerik:GridBoundColumn DataField="dID" ForceExtractValue="Always" Visible="false"></telerik:GridBoundColumn>
    18.<telerik:GridBoundColumn DataField="dCode" FilterControlAltText="Filter dCode column" HeaderText="Depot Code" ReadOnly="True" SortExpression="Depot Code" UniqueName="dCode">
    19.</telerik:GridBoundColumn>
    20.<telerik:GridBoundColumn DataField="dName" FilterControlAltText="Filter dName column" HeaderText="Depot Name" ReadOnly="True" SortExpression="Depot Friendly Name" UniqueName="dName">
    21.</telerik:GridBoundColumn>
    22.<telerik:GridBoundColumn DataField="IncidentCount" HeaderText="Incidents"></telerik:GridBoundColumn>
    23.</Columns>
    24.<DetailTables>
    25.<telerik:GridTableView Name="Incident" runat="server" DataSourceID="linqIncidents" CommandItemDisplay="Top"  AllowAutomaticInserts="true" AllowAutomaticUpdates="true" DataKeyNames="iID">
    26.<ParentTableRelation><telerik:GridRelationFields DetailKeyField="fk1_dID" MasterKeyField="dID" /></ParentTableRelation>
    27.<Columns>
    28.<telerik:GridEditCommandColumn Display="true" EditText="Update"></telerik:GridEditCommandColumn>
    29.<telerik:GridBoundColumn DataField="iID" Visible="false" ReadOnly="true"></telerik:GridBoundColumn>
    30.<telerik:GridBoundColumn HeaderText="Acc Ref" DataField="AccRef" SortExpression="iID" UniqueName="AccRef" ReadOnly="true">
    31.<FilterTemplate>
    32.<telerik:RadComboBox ID="ddlFilterID" runat="server" Width="50px" DataSourceID="LinqiID" DataTextField="iID" DataValueField="iID" OnClientSelectedIndexChanged="SelectedRefIndexChanged" SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("AccRef").CurrentFilterValue %>' AppendDataBoundItems="true">
    33.<Items><telerik:RadComboBoxItem Text="All" Value="" /></Items>
    34.</telerik:RadComboBox>
    35.<telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">
    36.<script type="text/javascript"> function SelectedRefIndexChanged(sender, args) { var tableView = $find(" <%# ((GridItem)Container).OwnerTableView.ClientID %>"); tableView.filter("AccRef", args.get_item().get_value(), "EqualTo"); } </script>
    37.</telerik:RadScriptBlock>
    38.</FilterTemplate>
    39.</telerik:GridBoundColumn>
    40.<telerik:GridDateTimeColumn DataField="iDate" DataType="System.DateTime" AllowFiltering="false" ItemStyle-HorizontalAlign="Center" FilterControlAltText="Filter iDate column" HeaderText="Date" SortExpression="iDate" UniqueName="iDate" DataFormatString="{0:d}"></telerik:GridDateTimeColumn>
    41.<telerik:GridDropDownColumn DataField="fk2_dID" DataSourceID="linqDrivers" HeaderText="Driver" ListTextField="dName" ListValueField="dID"></telerik:GridDropDownColumn>
    42.<telerik:GridDropDownColumn DataField="fk3_cID" DataSourceID="linqVehicle" HeaderText="Vehicle" ListTextField="cReg" ListValueField="cID"></telerik:GridDropDownColumn>
    43.<telerik:GridCheckBoxColumn AllowFiltering="False" DataField="iNotificationForm" HeaderText="Notification Form" SortExpression="iNotificationForm"/>
    44.<telerik:GridCheckBoxColumn AllowFiltering="False" DataField="iInterviewForm" HeaderText="Interview Form" SortExpression="iInterviewForm"/>
    45.<telerik:GridCheckBoxColumn AllowFiltering="False" DataField="iAccidentForm" HeaderText="Accident Form" SortExpression="iAccidentForm"/>
    46.<telerik:GridBoundColumn AllowFiltering="False" DataField="iEstimate" HeaderText="Estimate" SortExpression="iEstimate" DataType="System.Decimal" DataFormatString="{0:c}" FilterControlAltText="Filter iEstimate column" UniqueName="iEstimate"/>
    47.<telerik:GridBoundColumn AllowFiltering="False" DataField="iClarkesCost" HeaderText="Cost" SortExpression="iClarkesCost" DataType="System.Decimal" DataFormatString="{0:c}"/>
    48.<telerik:GridCheckBoxColumn AllowFiltering="False" DataField="iPaid" HeaderText="Paid" SortExpression="iPaid"/>
    49.<telerik:GridBoundColumn AllowFiltering="False" DataField="iDescription" HeaderText="Description" SortExpression="iDescription"/>
    50.<telerik:GridBoundColumn DataField="iLocation" HeaderText="Location" SortExpression="iLocation"/>
    51.<telerik:GridCheckBoxColumn DataField="iDriverAware" Visible="false" HeaderText="Driver Aware"></telerik:GridCheckBoxColumn>
    52.<telerik:GridBoundColumn DataField="DriverAwareStr" HeaderText="Driver Aware" SortExpression="iDriverAware" ReadOnly="true"/>
    53.<telerik:GridCheckBoxColumn DataField="iDriverFault" Visible="false" HeaderText="Driver at Fault"></telerik:GridCheckBoxColumn>
    54.<telerik:GridBoundColumn DataField="DriverFaultStr" HeaderText="Driver at Fault" SortExpression="iDriverFault" ReadOnly="true"/>
    55.<telerik:GridBoundColumn DataField="iAJGRef" HeaderText="AJG Ref" SortExpression="iAJGRef" FilterControlAltText="Filter iAJGRef column" UniqueName="iAJGRef" ReadOnly="True" />
    56.</Columns>
    57.</telerik:GridTableView>
    58.</DetailTables>
    59.</MasterTableView>
    60.</telerik:RadGrid>
    61.<asp:LinqDataSource ID="linqDepots" runat="server" ContextTypeName="Forms_BI.RetorqueLinqDataContext" Where="dID != 0"
    62.EntityTypeName="" TableName="Depots"></asp:LinqDataSource>
    63.<asp:LinqDataSource ID="linqIncidents" runat="server" ContextTypeName="Forms_BI.RetorqueLinqDataContext"
    64.EntityTypeName=""
    65.TableName="Incidents" Where="fk1_dID == @fk1_dID"
    66.EnableInsert="True" EnableUpdate="true" OnUpdating="linqIncidents_Updating">
    67.<WhereParameters>
    68.<asp:Parameter Name="fk1_dID" Type="Int32" />
    69.</WhereParameters>
    70.</asp:LinqDataSource>
    71.<asp:LinqDataSource ID="linqDrivers" runat="server" ContextTypeName="Forms_BI.RetorqueLinqDataContext" EntityTypeName="" TableName="Drivers"></asp:LinqDataSource>
    72.<asp:LinqDataSource ID="linqVehicle" runat="server" ContextTypeName="Forms_BI.RetorqueLinqDataContext" EntityTypeName="" TableName="Cabs"></asp:LinqDataSource>
    73.</ContentTemplate>
    74.</asp:UpdatePanel>
  2. Oliver
    Oliver avatar
    6 posts
    Member since:
    Jun 2017

    Posted 17 Jul 2017 Link to this post

    I've narrowed down the issue to when the LinqDataSource tries to perform the update. Stacktrace below. Anyone have any ideas why the automatic update fails in this way? Do I need to add a setting on the RadGrid to expose some extra data or something?

    at Forms_BI.Insurance.linqIncidents_Updating(Object sender, LinqDataSourceUpdateEventArgs e)
    at System.Web.UI.WebControls.LinqDataSourceView.OnUpdating(LinqDataSourceUpdateEventArgs e)
    at System.Web.UI.WebControls.LinqDataSourceView.UpdateObject(Object oldEntity, Object newEntity)
    at System.Web.UI.WebControls.QueryableDataSourceView.ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues)
    at System.Web.UI.WebControls.ContextDataSourceView.ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues)
    at System.Web.UI.WebControls.LinqDataSourceView.ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues)
    at System.Web.UI.DataSourceView.Update(IDictionary keys, IDictionary values, IDictionary oldValues, DataSourceViewOperationCallback callback)
  3. Marin Bratanov
    Admin
    Marin Bratanov avatar
    5458 posts

    Posted 18 Jul 2017 Link to this post

    Hi Oliver,

    I am pasting here my initial response to the same question from your ticket, in case it helps someone else.

    There is nothing obviously wrong with the provided setup.

    At this point I can offer three ideas:

     

     

    Regards,

     

    Marin Bratanov
    Progress Telerik
    Try our brand new, jQuery-free Angular 2 components built from ground-up which deliver the business app essential building blocks - a grid component, data visualization (charts) and form elements.
Back to Top