2017-08-01 85 views
0

我已阅读并再次阅读GridView更新上的链接。我不是新手,但我无法使GridView更新工作。你能看看吗?调试GridView更新失败c#

    <asp:SqlDataSource ID="sds_Drivers" runat="server" ConnectionString="<%$ ConnectionStrings:ThinairConnectionString %>" SelectCommand="SELECT [User_Id], [User_Active], [User_Reference], [User_Name], [User_Login], [User_Password] FROM [Users] WHERE ([User_Acct_Number] = @User_Acct_Number) ORDER BY [User_Name]" UpdateCommand="UPDATE [Users] SET [User_Active] = @User_Active, [User_Reference] = @User_Reference, [User_Name] = @User_Name, [User_Login] = @User_Login, [User_Password] = @User_Password WHERE ([User_Id] = @User_Id)" OnUpdating="sds_Drivers_Updating"> 
        <SelectParameters> 
         <asp:SessionParameter Name="User_Acct_Number" SessionField="Acct_Number" Type="String" /> 
        </SelectParameters> 
        <UpdateParameters> 
         <asp:Parameter Name="User_Active" Type="Int32" /> 
         <asp:Parameter Name="User_Reference" Type="String" /> 
         <asp:Parameter Name="User_Name" Type="String" /> 
         <asp:Parameter Name="User_Login" Type="String" /> 
         <asp:Parameter Name="User_Password" Type="String" /> 
         <asp:Parameter Name="User_Id" Type="Int32" /> 
        </UpdateParameters> 
       </asp:SqlDataSource> 
      </p> 
      <p> 
       <asp:GridView ID="gv_Drivers" runat="server" 
        Width="100%" 
        AllowSorting="True" 
        AutoGenerateColumns="False" 
        DataKeyNames="User_Id" 
        ConvertEmptyStringToNull="False" 
        DataSourceID="sds_Drivers" 
        CellSpacing="2" 
        CellPadding="2" 
        HeaderStyle-ForeColor="Black" 
        HeaderStyle-Wrap="true"> 
        <Columns> 
         <asp:CommandField EditText="Edit" ShowEditButton="True" ValidationGroup="Group3" /> 
         <asp:BoundField DataField="User_Id" HeaderText="User Id" ReadOnly="true" SortExpression="User_Id" /> 
         <asp:BoundField DataField="User_Active" HeaderText="1 = Active/0 = Inactive" SortExpression="User_Active" /> 
         <asp:BoundField DataField="User_Reference" HeaderText="Your Reference" SortExpression="User_Reference" /> 
         <asp:BoundField DataField="User_Name" HeaderText="User Name" SortExpression="User_Name" /> 
         <asp:BoundField DataField="User_Login" HeaderText="User Login" SortExpression="User_Login" /> 
         <asp:BoundField DataField="User_Password" HeaderText="User Password" SortExpression="User_Password" /> 
        </Columns> 
        <EmptyDataTemplate> 
         No Drivers Loaded 
        </EmptyDataTemplate> 
       </asp:GridView> 

我的代码试了一下调试背后:

 protected void sds_Drivers_Updating(object sender, SqlDataSourceCommandEventArgs e) 
    { 
     foreach (SqlParameter p in e.Command.Parameters) 
     { 
      Response.Write(p.ParameterName + ": " + p.Value + "<br />"); 
     } 
    } 

好消息是我的价值观。坏消息是这些并不是编辑领域的新价值。

我错过了什么?

在此先感谢!

+0

这是非常糟糕的,从设计的角度来看,以在你的ASPX页面的数据访问。您的数据访问应该在单独的层中执行。使用你的代码将它们绑在一起。 – mason

+0

我的大部分项目都是后台代码。然而,对于这个肮脏的我使用了ASP.net工具。我希望从使用.net中包含的工具的设计角度来看这更糟糕。 –

+0

你有没有听说过关注分离?保持数据检索和更新独立于业务和查看逻辑? – mason

回答

0

你可以试试这个:

protected void sds_Drivers_Updating(object sender, SqlDataSourceCommandEventArgs e) 
     { 
      foreach (SqlParameter p in e.Command.Parameters) 
      { 
       Response.Write(p.ParameterName + ": " + p.NewValues + "<br />"); 
      } 
     } 
+0

使用p.NewValues而不是p.Values。 –