This is a migrated thread and some comments may be shown as answers.

More Issues with AllowAutomaticUpdates property

1 Answer 154 Views
Grid
This is a migrated thread and some comments may be shown as answers.
EmpowerIT
Top achievements
Rank 2
EmpowerIT asked on 17 Jan 2008, 06:05 AM
Hi,
I think i've stumbled upon another problem with the AllowAutomaticUpdates property.
Are these properties only meant to work if you set the DataSourceId declaratively? I've done some testing and that seems the case, because if i set the datasource in the NeedDataSource event, automatic updates don't seem to work.

This is my code:

 void RadGrid1_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)  
    {  
        if (!e.IsFromDetailTable)  
        {  
            string typeID = Request["typeId"];  
            if (Convert.ToInt32(typeID) == "1")  
            {  
                RadGrid1.MasterTableView.DataSource = JobsSourceSuburb;  
            }  
            else 
            {  
                RadGrid1.MasterTableView.DataSource = JobsSourceTech;  
            }  
        }  
    } 

This is my Datasource definition:


  <asp:SqlDataSource ID="JobsSourceTech" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" 
            ProviderName="System.Data.SqlClient" OldValuesParameterFormatString="original_{0}" 
            SelectCommand="SELECT * FROM [View_test_RadSchedulerDetails] WHERE [TechnicianId] = @TechnicianId AND [ScheduleDate] = @ScheduleDate"   
            UpdateCommand="UPDATE [Jobs] SET [Vacant] = @Vacant, [Recall] = @Recall, [Confirmed] = @Confirmed WHERE [JobId] = @original_JobId" 
            ConflictDetection="CompareAllValues">  
           <SelectParameters> 
            <asp:Parameter Name="TechnicianId" Type="Int32" Direction="Input"/>  
            <asp:Parameter Name="ScheduleDate" Type="DateTime" Direction="Input" /> 
            </SelectParameters> 
            <UpdateParameters> 
            <asp:Parameter Name="original_JobId" Type="Int32" /> 
            <asp:Parameter Name="Recall" Type="Boolean"  /> 
            <asp:Parameter Name="Vacant" Type="Boolean"  /> 
            <asp:Parameter Name="Confirmed" Type="Boolean" /> 
            </UpdateParameters> 
  </asp:SqlDataSource> 
          
        <asp:SqlDataSource ID="JobsSourceSuburb" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" 
            ProviderName="System.Data.SqlClient"   
            SelectCommand="SELECT * FROM [View_test_RadSchedulerDetails] WHERE [SuburbId] = @SuburbId AND [ScheduleDate] = @ScheduleDate" 
            UpdateCommand="UPDATE [Jobs] SET [Vacant] = @Vacant, [Recall] = @Recall, [Confirmed] = @Confirmed WHERE [JobId] = @original_JobId" 
            ConflictDetection="CompareAllValues">  
           <SelectParameters> 
            <asp:Parameter Name="SuburbId" Type="Int32" Direction="Input"/>  
            <asp:Parameter Name="ScheduleDate" Type="DateTime" Direction="Input" /> 
            </SelectParameters> 
            <UpdateParameters> 
            <asp:Parameter Name="JobId" Type="Int32" /> 
            <asp:Parameter Name="Recall" Type="Boolean"  /> 
            <asp:Parameter Name="Vacant" Type="Boolean"  /> 
            <asp:Parameter Name="Confirmed" Type="Boolean" /> 
            </UpdateParameters> 
        </asp:SqlDataSource> 

This is my RadGrid definition (its a slightly large one):

 <telerik:RadGrid ID="RadGrid1" runat="server" Skin="Web20" AllowSorting="True" GridLines="None" AutoGenerateColumns="False" AutoGenerateEditColumn="True" AllowAutomaticUpdates="True">  
    <GroupPanel ID="GroupPanel" Style="width: 100%;">  
    </GroupPanel> 
    <ExportSettings> 
        <Pdf FontType="Subset" PaperSize="Letter" /> 
        <Excel Format="Html" /> 
    </ExportSettings> 
    <MasterTableView CommandItemDisplay="None" CurrentResetPageIndexAction="SetPageIndexToFirst" DataKeyNames="JobId" 
         Dir="LTR" Frame="Border" TableLayout="Auto" AllowAutomaticUpdates="True" EditMode="EditForms" Name="JobRow">  
        <EditFormSettings> 
            <EditColumn CurrentFilterFunction="NoFilter" FilterListOptions="VaryByDataType">  
            </EditColumn> 
        </EditFormSettings> 
        <ExpandCollapseColumn CurrentFilterFunction="NoFilter" FilterListOptions="VaryByDataType" 
            Resizable="False">  
            <HeaderStyle Width="20px" /> 
        </ExpandCollapseColumn> 
        <RowIndicatorColumn CurrentFilterFunction="NoFilter" FilterListOptions="VaryByDataType" 
            Visible="False">  
            <HeaderStyle Width="20px" /> 
        </RowIndicatorColumn> 
        <Columns> 
            <telerik:GridEditCommandColumn CurrentFilterFunction="NoFilter" FilterListOptions="VaryByDataType" 
                UniqueName="AutoGeneratedEditColumn">  
                <HeaderStyle Width="30px" /> 
            </telerik:GridEditCommandColumn> 
            <telerik:GridBoundColumn CurrentFilterFunction="NoFilter" DataField="OrderNumber" 
                FilterListOptions="VaryByDataType" ForceExtractValue="None" HeaderText="Order Number" 
                ReadOnly="True" UniqueName="OrderNumber">  
            </telerik:GridBoundColumn> 
            <telerik:GridBoundColumn CurrentFilterFunction="NoFilter" DataField="AccountName" 
                FilterListOptions="VaryByDataType" ForceExtractValue="None" HeaderText="Account" 
                ReadOnly="True" UniqueName="Account Name">  
            </telerik:GridBoundColumn> 
            <telerik:GridBoundColumn CurrentFilterFunction="NoFilter" FilterListOptions="VaryByDataType" 
                ForceExtractValue="None" HeaderText="Address" SortExpression="Address" UniqueName="column" DataField="Address" ReadOnly="True">  
            </telerik:GridBoundColumn> 
            <telerik:GridBoundColumn CurrentFilterFunction="NoFilter" DataField="Suburb" FilterListOptions="VaryByDataType" 
                ForceExtractValue="None" HeaderText="Suburb" ReadOnly="True" UniqueName="Suburb">  
            </telerik:GridBoundColumn> 
            <telerik:GridCheckBoxColumn CurrentFilterFunction="NoFilter" DataField="Vacant" FilterListOptions="VaryByDataType" 
                ForceExtractValue="None" HeaderText="Vacant" SortExpression="Vacant" UniqueName="Vacant">  
                </telerik:GridCheckBoxColumn> 
                        <telerik:GridCheckBoxColumn CurrentFilterFunction="NoFilter" DataField="Recall" FilterListOptions="VaryByDataType" 
                ForceExtractValue="None" HeaderText="Recall" SortExpression="Recall" UniqueName="Recall">  
                </telerik:GridCheckBoxColumn> 
                  <telerik:GridCheckBoxColumn CurrentFilterFunction="NoFilter" DataField="Confirmed" FilterListOptions="VaryByDataType" 
                ForceExtractValue="None" HeaderText="Confirmed" SortExpression="Confirmed" UniqueName="Confirmed">  
                </telerik:GridCheckBoxColumn> 
            <telerik:GridDateTimeColumn ReadOnly="True" CurrentFilterFunction="NoFilter" DataField="DueDateTime" FilterListOptions="VaryByDataType" 
                ForceExtractValue="None" HeaderText="Due Date" SortExpression="DueDateTime" UniqueName="DueDateTime" DataType="System.DateTime"  DataFormatString="{0:d}">  
                </telerik:GridDateTimeColumn> 
        </Columns> 
        <DetailTables> 
            <telerik:GridTableView runat="server" CommandItemDisplay="None" 
                CurrentResetPageIndexAction="SetPageIndexToFirst" DataKeyNames="JobId,JobCodeId" DataSourceID="JobCodesSource" 
                Dir="LTR" Frame="Border" TableLayout="Auto" HierarchyDefaultExpanded="false">  
                <EditFormSettings> 
                    <EditColumn CurrentFilterFunction="NoFilter" FilterListOptions="VaryByDataType">  
                    </EditColumn> 
                </EditFormSettings> 
                <ParentTableRelation> 
                    <telerik:GridRelationFields DetailKeyField="JobId" MasterKeyField="JobId" /> 
                </ParentTableRelation> 
                <ExpandCollapseColumn CurrentFilterFunction="NoFilter" FilterListOptions="VaryByDataType" 
                    Resizable="False">  
                    <HeaderStyle Width="20px" /> 
                </ExpandCollapseColumn> 
                <RowIndicatorColumn CurrentFilterFunction="NoFilter" FilterListOptions="VaryByDataType" 
                    Visible="False">  
                    <HeaderStyle Width="20px" /> 
                </RowIndicatorColumn> 
                <Columns> 
                <telerik:GridDropDownColumn DataField="CodeId" DataSourceID="CodeSource" ListTextField="CodeName"   
                            ListValueField="CodeId" HeaderText="Code" UniqueName="CodeId" CurrentFilterFunction="NoFilter" FilterListOptions="VaryByDataType" ForceExtractValue="None">  
                     </telerik:GridDropDownColumn> 
 
                   <telerik:GridNumericColumn CurrentFilterFunction="NoFilter" DataField="QuantityRequired" 
                        DataType="System.Decimal" FilterListOptions="VaryByDataType" ForceExtractValue="None" 
                        HeaderText="QuantityRequired" SortExpression="QuantityRequired" UniqueName="QuantityRequired" NumericType="Number"</telerik:GridNumericColumn> 
                      
                    <telerik:GridNumericColumn CurrentFilterFunction="NoFilter" DataField="QuantityCompleted" 
                        DataType="System.Decimal" FilterListOptions="VaryByDataType" ForceExtractValue="None" 
                        HeaderText="QuantityCompleted" SortExpression="QuantityCompleted" UniqueName="QuantityCompleted" NumericType="Number">  
                        </telerik:GridNumericColumn>   
                    <telerik:GridBoundColumn CurrentFilterFunction="NoFilter" DataField="Comment" FilterListOptions="VaryByDataType" 
                        ForceExtractValue="None" HeaderText="Comment" SortExpression="Comment" UniqueName="Comment">  
                    </telerik:GridBoundColumn>           
                </Columns> 
                <DetailTables> 
                    <telerik:GridTableView runat="server" CommandItemDisplay="None" CurrentResetPageIndexAction="SetPageIndexToFirst" 
                        DataSourceID="JobScheduleSource" DataKeyNames="JobCodeId,ScheduleId" Dir="LTR" Frame="Border" TableLayout="Auto">  
                        <EditFormSettings> 
                            <EditColumn CurrentFilterFunction="NoFilter" FilterListOptions="VaryByDataType">  
                            </EditColumn> 
                        </EditFormSettings> 
                         <ParentTableRelation> 
                            <telerik:GridRelationFields DetailKeyField="JobCodeId" MasterKeyField="JobCodeId" /> 
                        </ParentTableRelation> 
                        <ExpandCollapseColumn CurrentFilterFunction="NoFilter" FilterListOptions="VaryByDataType" 
                            Resizable="False" Visible="False">  
                            <HeaderStyle Width="20px" /> 
                        </ExpandCollapseColumn> 
                        <RowIndicatorColumn CurrentFilterFunction="NoFilter" FilterListOptions="VaryByDataType" 
                            Visible="False">  
                            <HeaderStyle Width="20px" /> 
                        </RowIndicatorColumn> 
                        <Columns> 
                            <telerik:GridDateTimeColumn CurrentFilterFunction="NoFilter" DataField="ScheduleDateTime" 
                                DataType="System.DateTime" FilterListOptions="VaryByDataType" ForceExtractValue="None" 
                                HeaderText="Schedule Date/Time" UniqueName="ScheduleDateTime" PickerType="DateTimePicker">  
                            </telerik:GridDateTimeColumn> 
                            <telerik:GridDropDownColumn DataField="TechnicianId" DataSourceID="TechniciansSource" ListTextField="TechName"   
                            ListValueField="TechnicianId" HeaderText="Technician" UniqueName="TechnicianId" CurrentFilterFunction="NoFilter" FilterListOptions="VaryByDataType" ForceExtractValue="None">  
                            </telerik:GridDropDownColumn> 
                            <telerik:GridBoundColumn CurrentFilterFunction="NoFilter" DataField="ScheduleNote" 
                                FilterListOptions="VaryByDataType" ForceExtractValue="None" HeaderText="Notes" 
                                MaxLength="200" UniqueName="ScheduleNote">  
                            </telerik:GridBoundColumn> 
                        </Columns> 
                    </telerik:GridTableView> 
                </DetailTables> 
            </telerik:GridTableView> 
        </DetailTables> 
    </MasterTableView> 
</telerik:RadGrid> 

Please note that I have tried and confirmed that it all works if I just set the DataSourceId declartively in the RadGrid definition (i.e there is no problem with the sqldatasources).

Also, the updates on the detail tables work fine (as they have the DataSourceId set declartively)

Thanks,
Fayez

1 Answer, 1 is accepted

Sort by
0
Giuseppe
Telerik team
answered on 17 Jan 2008, 03:45 PM
Hello EmpowerIT,

As noted here in order to insert/update/delete items automatically (without any extra coding) in Telerik RadGrid through a DataSourceControl API you have to relate a DataSourceControl to your grid instance through the DataSourceID attribute of the grid. You should not mix the declarative databinding approach with the advanced databinding capabilities provided by the NeedDataSource event. You can find more information on the distinct binding scenarios here under the section "Populating the control with data" >> "Understanding databinding".


Sincerely yours,
Manuel
the Telerik team

Instantly find answers to your questions at the new Telerik Support Center
Tags
Grid
Asked by
EmpowerIT
Top achievements
Rank 2
Answers by
Giuseppe
Telerik team
Share this question
or