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

[Solved] how to replace SessionDataSource with SqlDataSource

2 Answers 191 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Amy Liu
Top achievements
Rank 1
Amy Liu asked on 21 Dec 2009, 10:09 PM
Hi
the demo -Grid- MultiColumnEditForm run fine on my computer.
Now I have my own database-Northwind and I want to use sqldatasource instead of sessiondatasource.
I copied all the code into my project except datasource, the error:
Employee 3 cannot be updated. Reason: Must declare the scalar variable "@EmployeeID".
  shows after I click on update.

I searched the internet which normally say that you need to put DataKeyNames="EmployeeID" into grid. I think I have it. so what is wrong?

My code here(I didn't change the insert and delete command code), I did it using wizard before it give me silence to not update( no exception): Thanks for any help.

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">

    <style type="text/css">
        .EditFormHeader td
        {
            background: #dadec8;
            padding: 5px 0px;
        }
        </style>
</head>
<body class="BODY">
    <form runat="server" id="mainForm" method="post" style="width: 100%">
 
        <!-- content start -->
        <telerik:RadScriptManager ID="RadScriptManager1" runat="server"></telerik:RadScriptManager>
        
        <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">

            <script type="text/javascript">
            function RowDblClick(sender, eventArgs)
            {
              sender.get_masterTableView().editItem(eventArgs.get_itemIndexHierarchical());
            }
            </script>

        </telerik:RadCodeBlock>
        <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
            <AjaxSettings>
                <telerik:AjaxSetting AjaxControlID="RadGrid1">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControl ControlID="RadGrid1" />
                        <telerik:AjaxUpdatedControl ControlID="divMsg" />
                    </UpdatedControls>
                </telerik:AjaxSetting>
            </AjaxSettings>
        </telerik:RadAjaxManager>
        <div id="divMsg" runat="server" style="float: left;">
            <asp:Label ID="Label1" runat="server" EnableViewState="False" Visible="false"></asp:Label>
        </div>
    <telerik:RadSlider ID="RadSlider1" runat="server">
    </telerik:RadSlider>
        <br />
        <telerik:RadGrid ID="RadGrid1" DataSourceID="SqlDataSource1" runat="server" ShowStatusBar="True"
            GridLines="None" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False"
            OnPreRender="RadGrid1_PreRender" AllowAutomaticDeletes="True" AllowAutomaticInserts="True"
            AllowAutomaticUpdates="True" OnItemDeleted="RadGrid1_ItemDeleted"
            OnItemInserted="RadGrid1_ItemInserted"
            OnItemUpdated="RadGrid1_ItemUpdated" >
            <MasterTableView DataKeyNames="EmployeeID" GridLines="None" Width="100%">
                <Columns>
                    <telerik:GridEditCommandColumn UniqueName="EditCommandColumn">
                    </telerik:GridEditCommandColumn>
                    <telerik:GridBoundColumn Visible="False" UniqueName="Country" HeaderText="Country"
                        DataField="Country" EditFormColumnIndex="1">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn Visible="False" UniqueName="City" HeaderText="City" DataField="City"
                        EditFormColumnIndex="1">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn Visible="False" UniqueName="Region" HeaderText="Region"
                        DataField="Region" EditFormColumnIndex="2">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn Visible="False" UniqueName="TitleOfCourtesy" HeaderText="TOC"
                        DataField="TitleOfCourtesy" EditFormColumnIndex="2">
                        <HeaderStyle Width="60px"></HeaderStyle>
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn UniqueName="FirstName" EditFormColumnIndex="0" HeaderText="FirstName"
                        DataField="FirstName">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn UniqueName="LastName" EditFormColumnIndex="0" HeaderText="LastName"
                        DataField="LastName">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn Visible="False" UniqueName="HireDate" EditFormColumnIndex="0"
                        HeaderText="Hire Date" DataField="HireDate">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn UniqueName="Title" EditFormColumnIndex="1" HeaderText="Title"
                        DataField="Title">
                    </telerik:GridBoundColumn>
                </Columns>
                <EditFormSettings ColumnNumber="3" CaptionFormatString="Edit details for employee with ID {0}"
                    CaptionDataField="EmployeeID">
                    <FormTableItemStyle Wrap="False"></FormTableItemStyle>
                    <FormCaptionStyle CssClass="EditFormHeader"></FormCaptionStyle>
                    <FormMainTableStyle GridLines="None" CellSpacing="0" CellPadding="3" Width="100%" />
                    <FormTableStyle GridLines="Horizontal" CellSpacing="0" CellPadding="2" CssClass="module"
                        Height="110px" Width="100%" />
                    <FormTableAlternatingItemStyle Wrap="False"></FormTableAlternatingItemStyle>
                    <FormStyle Width="100%" BackColor="#eef2ea"></FormStyle>
                    <EditColumn UpdateText="Update record" UniqueName="EditCommandColumn1" CancelText="Cancel edit">
                    </EditColumn>
                    <FormTableButtonRowStyle HorizontalAlign="Left" CssClass="EditFormButtonRow"></FormTableButtonRowStyle>
                </EditFormSettings>
                <ExpandCollapseColumn ButtonType="ImageButton" Visible="False" UniqueName="ExpandColumn">
                    <HeaderStyle Width="19px"></HeaderStyle>
                </ExpandCollapseColumn>
            </MasterTableView>
            <ClientSettings>
                <ClientEvents OnRowDblClick="RowDblClick" />
            </ClientSettings>
        </telerik:RadGrid>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server"
            ConflictDetection="CompareAllValues"
            ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" DeleteCommand="DELETE FROM [Employees] WHERE [EmployeeID] = ? AND [LastName] = ? AND [FirstName] = ? AND [Title] = ? AND [TitleOfCourtesy] = ? AND [BirthDate] = ? AND [HireDate] = ? AND [Address] = ? AND [City] = ? AND [Region] = ? AND [PostalCode] = ? AND [Notes] = ? AND [Country] = ? AND [HomePhone] = ? AND [Extension] = ? AND [ReportsTo] = ?"
            InsertCommand="INSERT INTO [Employees] ([EmployeeID], [LastName], [FirstName], [Title], [TitleOfCourtesy], [BirthDate], [HireDate], [Address], [City], [Region], [PostalCode], [Notes], [Country], [HomePhone], [Extension], [ReportsTo]) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
            OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT [EmployeeID], [LastName], [FirstName], [Title], [TitleOfCourtesy], [BirthDate], [HireDate], [Address], [City], [Region], [PostalCode], [Notes], [Country], [HomePhone], [Extension], [ReportsTo] FROM [Employees]"
            
            UpdateCommand="UPDATE [Employees] SET [LastName] =@LastName, [FirstName] =@FirstName, [Title] =@Title, [TitleOfCourtesy] =@TitleOfCourtesy, [BirthDate] = @BirthDate, [HireDate] = @HireDate, [Address] =@Address, [City] =@City, [Region] =@Region, [PostalCode] =@PostalCode, [Notes] = @Notes, [Country] =@Country, [HomePhone] = @HomePhone, [Extension] =@Extension, [ReportsTo] = @ReportsTo WHERE [EmployeeID] = @EmployeeID AND [LastName] =LastName AND [FirstName] = @FirstName AND [Title] = @Title AND [TitleOfCourtesy] =@TitleOfCourtesy AND [BirthDate] = @BirthDate AND [HireDate] = @HireDate AND [Address] = @Address AND [City] = @City AND [Region] = @Region AND [PostalCode] = @PostalCode AND [Notes] = @Notes AND [Country] = @Country AND [HomePhone] = @HomePhone AND [Extension] = @Extension AND [ReportsTo] = @ReportsTo">
            <UpdateParameters>
                <asp:Parameter Name="LastName" Type="String" />
                <asp:Parameter Name="FirstName" Type="String" />
                <asp:Parameter Name="Title" Type="String" />
                <asp:Parameter Name="TitleOfCourtesy" Type="String" />
                <asp:Parameter Name="BirthDate" Type="DateTime" />
                <asp:Parameter Name="HireDate" Type="DateTime" />
                <asp:Parameter Name="Address" Type="String" />
                <asp:Parameter Name="City" Type="String" />
                <asp:Parameter Name="Region" Type="String" />
                <asp:Parameter Name="PostalCode" Type="String" />
                <asp:Parameter Name="Notes" Type="String" />
                <asp:Parameter Name="Country" Type="String" />
                <asp:Parameter Name="HomePhone" Type="String" />
                <asp:Parameter Name="Extension" Type="String" />
                <asp:Parameter Name="ReportsTo" Type="Int32" />
                <asp:Parameter Name="EmployeeID" />
            </UpdateParameters>
     </asp:SqlDataSource>
        <!-- content end -->
      
    </form>
</body>
</html>

2 Answers, 1 is accepted

Sort by
0
Amy Liu
Top achievements
Rank 1
answered on 21 Dec 2009, 10:32 PM
if I add

 

<telerik:GridBoundColumn DataField="EmployeeID" HeaderText="EmployeeID"

 

 

UniqueName="EmployeeID" Visible="False">

 

 

</telerik:GridBoundColumn>

into columns  then It perform not update with silence  ( no exception throws).

 

0
Amy Liu
Top achievements
Rank 1
answered on 22 Dec 2009, 02:35 PM
Never mind. It works now. It seem I need a good night sleep.
Tags
Grid
Asked by
Amy Liu
Top achievements
Rank 1
Answers by
Amy Liu
Top achievements
Rank 1
Share this question
or