2013-08-25 110 views
0

當我點擊GridView中的一行上的編輯時,它顯示數據應該像它應該。它顯示我期望看到它們的文本框,它允許我修改框中的數據。當我單擊該行上的更新時,它會執行與cancel相同的操作;在不保存任何數據更改的情況下填充頁面。數據庫也沒有改變。ASP gridview不更新數據庫

<%@ Page Title="Employee Lookup"Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="EmployeeLookup.aspx.cs" Inherits="WSC.EmployeeLookup" %> 
<p> 
    <asp:Table ID="Table1" runat="server" CellPadding="5" Width="442px"> 
     <asp:TableRow>   
     <asp:TableCell><asp:Button ID="NewUserButton" PostBackUrl="~/EmployeeInfo.aspx" runat="server" Text="New Employee" /></asp:TableCell> 
     </asp:TableRow> 
    </asp:Table> 
</p> 
<p> 
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="eID" 
     AutoGenerateEditButton="True" DataSourceID="AccessDataSource2" 
     EmptyDataText="There are no data records to display." AllowSorting="True" AllowPaging="True">    
     <Columns> 
      <asp:BoundField DataField="eID" HeaderText="Employee ID" ReadOnly="True" SortExpression="eID" /> 
      <asp:BoundField DataField="eFirstName" HeaderText="FirstName" SortExpression="eFirstName" /> 
      <asp:BoundField DataField="eLastName" HeaderText="LastName" SortExpression="eLastName" /> 
      <asp:TemplateField HeaderText="JobTitle" SortExpression="eJobTitle"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox4" width="50" runat="server" Text='<%# Bind("eJobTitle") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label4" runat="server" Text='<%# Eval("eJobTitle") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Dept Code" SortExpression="deptNumber"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox5" width="50" runat="server" Text='<%# Bind("deptNumber") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label5" runat="server" Text='<%# Eval("deptNumber") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="UserName" SortExpression="eUserName"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox6" width="50" runat="server" Text='<%# Bind("eUserName") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label6" runat="server" Text='<%# Eval("eUserName") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Password" SortExpression="ePassword"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox3" width="70" runat="server" Text='<%# Bind("ePassword") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label3" runat="server" Text="*********"></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Email" SortExpression="eEmail"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox7" runat="server" Text='<%# Bind("eEmail") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label7" runat="server" Text='<%# Eval("eEmail") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Hire Date" SortExpression="eDateHire"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("eDateHire") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label1" runat="server" Text='<%# Eval("eDateHire") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="securityID" SortExpression="securityID"> 
       <EditItemTemplate> 
        <asp:Label ID="Label2" runat="server" Text='<%# Bind("securityID") %>'></asp:Label> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label2" runat="server" Text='<%# Eval("securityID") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 
    <asp:Label ID="ErrorMessageLabel" runat="server" Text="" ></asp:Label> 

    <asp:AccessDataSource ID="AccessDataSource2" runat="server" DataFile="C:\WSC\WSC\WSC\CIS470_Database.accdb"    
     SelectCommand="SELECT `eID`, `eFirstName`, `eLastName`, `eJobTitle`, `deptNumber`, `eUserName`, `ePassword`, `eEmail`, `eDateHire`, `securityID` FROM `Employee`" 
     UpdateCommand="UPDATE `Employee` SET `eFirstName` = ?, `eLastName` = ?, `eJobTitle` = ?, `deptNumber` = ?, `eUserName` = ?, `ePassword` = ?, `eEmail` = ?, `eDateHire` = ?, `securityID` = ? WHERE `eID` = ?"> 
     <DeleteParameters> 
      <asp:Parameter Name="eID" Type="Int32" /> 
     </DeleteParameters> 
     <UpdateParameters> 
      <asp:Parameter Name="eFirstName" Type="String" /> 
      <asp:Parameter Name="eLastName" Type="String" /> 
      <asp:Parameter Name="eJobTitle" Type="String" /> 
      <asp:Parameter Name="deptNumber" Type="String" /> 
      <asp:Parameter Name="eUserName" Type="String" /> 
      <asp:Parameter Name="ePassword" Type="String" /> 
      <asp:Parameter Name="eEmail" Type="String" /> 
      <asp:Parameter Name="ePhone" Type="String" /> 
      <asp:Parameter Name="eDateHire" Type="DateTime" /> 
      <asp:Parameter Name="eDateTerm" Type="DateTime" /> 
      <asp:Parameter Name="securityID" Type="Int32" /> 
     </UpdateParameters> 
    </asp:AccessDataSource> 
</p> 

+0

之間的參數,請參閱我的答案在這裏:http://stackoverflow.com/questions/31044683/how-do-i-update-an-an-訪問數據庫從-A-GridView控件,在視覺工作室/ 43772410#43772410 –

回答

0

地址:

<asp:Parameter Name="eID" Type="Int32" /> 

要:

<UpdateParameters> 
     <asp:Parameter Name="eFirstName" Type="String" /> 
     <asp:Parameter Name="eLastName" Type="String" /> 
     <asp:Parameter Name="eJobTitle" Type="String" /> 
     <asp:Parameter Name="deptNumber" Type="String" /> 
     <asp:Parameter Name="eUserName" Type="String" /> 
     <asp:Parameter Name="ePassword" Type="String" /> 
     <asp:Parameter Name="eEmail" Type="String" /> 
     <asp:Parameter Name="ePhone" Type="String" /> 
     <asp:Parameter Name="eDateHire" Type="DateTime" /> 
     <asp:Parameter Name="eDateTerm" Type="DateTime" /> 
     <asp:Parameter Name="securityID" Type="Int32" /> 
    </UpdateParameters> 

及用途:

eFirstName = @eFirstName, ... WHERE eID = @eID" 

插件你在UpdateCommand中使用的東西。問題是你的參數必須以更新和刪除命令中的@開頭。然後,他們將多

<DeleteParameters></DeleteParameters> 

而且

<UpdateParameters></UpdateParameters>