Solved

Detailsview won't Update

Posted on 2008-06-23
7
464 Views
Last Modified: 2013-11-26
I have created many gridview/detailsview screens but I can't figure out the problem with this one.

The Detailsview shows the edit buttons, and allows the user to go thru the process of making a change.  But the database simply does not update after the edit link is clicked.  No errors are generated, just nothing changes in the database.

This has happened before, and I was able to fix it, by checking to make sure the Update statement was corrent -- But I can't seem to find the problem this time....

Any help would be greatly appreciated.
Datasource:
 
    <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
        ConnectionString="<%$ ConnectionStrings:OnsiteServicesConnection %>" 
        DeleteCommand="DELETE FROM [Hardware] WHERE [ID] = ?" 
        ProviderName="<%$ ConnectionStrings:OnsiteServicesConnection.ProviderName %>" 
        SelectCommand="SELECT * FROM Hardware WHERE (ID = ?)" 
        
        UpdateCommand="UPDATE [Hardware] SET [MachineName] = ?, [MachineDesc] = ?, [Model] = ?, [MachineSerial]=?, [ServicePhone]=?, 
        [FirmwareVer]=?, [IPAddress]=?, [MACAddress] = ?, [DomainName] = ?, [Notes] = ? WHERE [ID] = ?">
        <SelectParameters>
            <asp:SessionParameter Name="ID" SessionField="SelectedID" Type="String" />
        </SelectParameters>
        <DeleteParameters>
            <asp:Parameter Name="ID" Type="Int32" />
        </DeleteParameters>
        <UpdateParameters>
            <asp:Parameter Name="MachineName" Type="String" />
            <asp:Parameter Name="MachineDesc" Type="String" />
            <asp:Parameter Name="Model" Type="String" />
            <asp:Parameter Name="MachineSerial" Type="String" />
            <asp:Parameter Name="ServicePhone" Type="String" />
            <asp:Parameter Name="FirmwareVer" Type="String" />
            <asp:Parameter Name="IPAddress" Type="String" />
            <asp:Parameter Name="MACAddress" Type="String" />
            <asp:Parameter Name="DomainName" Type="String" />
            <asp:Parameter Name="Notes" Type="String" />
            <asp:Parameter Name="ID" Type="Int32" />
        </UpdateParameters>
    </asp:SqlDataSource>
 
 
 
Detailsview:
 
 
<asp:DetailsView ID="DetailsView2" runat="server" AutoGenerateRows="False" 
                                CellPadding="4" DataKeyNames="ID" 
                                DataSourceID="SqlDataSource2" Font-Names="Arial" Font-Size="Small" 
                                ForeColor="#333333" GridLines="None" Height="50px" Width="100%" 
                                HeaderText="Details">
                                <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                                <CommandRowStyle BackColor="#D1DDF1" Font-Bold="True" />
                                <RowStyle BackColor="#EFF3FB" />
                                <FieldHeaderStyle BackColor="#DEE8F5" Font-Bold="True" Width="170px" />
                                <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
                                <EmptyDataTemplate>
                                    No Data Found
                                </EmptyDataTemplate>
                                <Fields>
                                    <asp:BoundField DataField="MachineName" HeaderText="Device Name" 
                                        SortExpression="MachineName" />
                                    <asp:BoundField DataField="MachineDesc" HeaderText="Description" 
                                        SortExpression="MachineDesc" />
                                    <asp:BoundField DataField="Model" HeaderText="Model" SortExpression="Model" />
                                    <asp:BoundField DataField="MachineSerial" HeaderText="MachineSerial" 
                                        SortExpression="MachineSerial" />
                                    <asp:BoundField DataField="FirmwareVer" HeaderText="Firmware Version" 
                                        SortExpression="FirmwareVer" />
                                    <asp:BoundField DataField="IPAddress" HeaderText="IP Address" 
                                        SortExpression="IPAddress" />
                                    <asp:BoundField DataField="MACAddress" HeaderText="MAC Address" 
                                        SortExpression="MACAddress" />
                                    <asp:BoundField DataField="DomainName" HeaderText="Domain Name" 
                                        SortExpression="DomainName" />
                                    <asp:BoundField DataField="Notes" HeaderText="Notes" SortExpression="Notes" />
                                    <asp:BoundField DataField="TimeAdded" DataFormatString="{0:d}" 
                                        HeaderText="Date Added" SortExpression="TimeAdded" ReadOnly="True" />
                                    <asp:TemplateField HeaderText="Attached Plotter" 
                                        SortExpression="ParentMachineSerial">
                                        <InsertItemTemplate>
                                            <asp:TextBox ID="TextBox1" runat="server" 
                                                Text='<%# Bind("ParentKey") %>'></asp:TextBox>
                                        </InsertItemTemplate>
                                        <ItemTemplate>
                                            <asp:LinkButton ID="LinkButton2" Text='<%# Bind("ParentKey") %>' ToolTip='<%# Bind("ParentKey") %>'
                                                runat="server" onclick="LinkButton2_Click"></asp:LinkButton>
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="Attached Scanner">
                                        <ItemTemplate>
                                            <asp:LinkButton ID="LinkButton3" runat="server" 
                                                Text='<%# Session["ChildID"] %>'  ToolTip='<%# Session["ChildID"] %>' onclick="LinkButton3_Click"></asp:LinkButton>
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                    <asp:CommandField ShowEditButton="True" />
                                </Fields>
                                <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                                <EditRowStyle BackColor="#2461BF" />
                                <AlternatingRowStyle BackColor="White" />
                            </asp:DetailsView>

Open in new window

0
Comment
Question by:dparkes
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 2
7 Comments
 
LVL 9

Expert Comment

by:Tone' Shelby
ID: 21852011
Is this a table you have been able to update before or is this the first attempt to do so? If first time I would check the update permissions on the table. This can occur if update permissions are not allowed on the table from the SQL  / db admin side.
0
 
LVL 1

Author Comment

by:dparkes
ID: 21852103
Other pages that affect the same table work perfectly.  I just checked.  There are a few minor differences in the way the pages are structured but I didn't think it would make any difference, like this select command doesn't match the update command on this page.  Select and Update don't need to match, do they?
0
 
LVL 9

Accepted Solution

by:
Tone' Shelby earned 500 total points
ID: 21852201
Yes It could if the select dat pulled back isn't the data being updated for sure say if the id is even slightly different and more specifically if the DataSource ID is the same if so. You may try checking this by say renaming one or the other of the datasource ID to make a quick check and then change it back if not.
Also I've not seen ? used so much like you have here as well...but if it has worked for you in the past..

Here is some sample code for instance: when using a Master Detail With GridView and DetailsView each Datasouce is different here .....&  no  question marks. I use this all inclusive  template as a starting point maybe it could help you?
{attached)

Hope it helps ...
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 9

Expert Comment

by:Tone' Shelby
ID: 21852209
Ooops forgot the attachment ..here ya go ! :)
Master-Detail-With-GridView-and-.txt
0
 
LVL 9

Expert Comment

by:Tone' Shelby
ID: 21852221
One more thing, notice the DataKeyNames in the attached it assures the record being updated is the one you choose on the screen too.
0
 
LVL 9

Expert Comment

by:Tone' Shelby
ID: 21852294
My sincerest apolgies I sent you just the details view without editing / update capabilities ...here is the file I mean to send you ...way too late to be answering questions on a Monday night I guess LOL { now attached}.
Guess you'll have two templates now if you need them ...

New file attached with  now editing capabilities ...

Also I highly recommend moving commands ecspecially at least your update commands to DB a stored procedure as it reduces the risk of injection attacks for sure. { the attached with included was for viewing  the SQL structure of course}

To be able to use this Update scenario with a Stored Procedure, only two lines need to be addressed. First, of course, change the UpdateCommand property to the actual name of the newly  Stored Procedure. Then, assign 'Stored Procedure" to the 'UpdateCommandType' property:

 UpdateCommand="procUpdateAuthors"
 UpdateCommandType="storedProcedure"

{and the same way for the other Select commands with other sps if you do)

Hope it helps ...

Master-Detail-Editing-with-Detai.txt
0
 
LVL 1

Author Comment

by:dparkes
ID: 21856656
tshel,

Thanks for you suggestions, particularly with regard to using stored procedures for added security.  I never thought of that, and will definitely look into it.

It turns out my main problem has to do with the way I'm storing the ID.  It's actually in a session variable (I know that's not obvious in the code), but the session variable is not correct when it needs to be.  I still need to fix this, but at least I know the problem now.  When the ID is hardcoded it works.  Thanks again.
0

Featured Post

How our DevOps Teams Maximize Uptime

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us. Read the use case whitepaper.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Error running webpage local computer 7 26
How can I do Unit Testing with Session ? 1 23
Need to sort columns in DataGridView 4 36
ASP Classic - Read XML File inner content 10 42
ASP.Net to Oracle Connectivity Recently I had to develop an ASP.NET application connecting to an Oracle database.As I am doing it first time ,I had to solve several problems. This article will help to such developers  to develop an ASP.NET client…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…
How to Install VMware Tools in Red Hat Enterprise Linux 6.4 (RHEL 6.4) Step-by-Step Tutorial

735 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question