按下“更新"按钮后,Detailsview的页面回发 [英] Detailsview's page post back after Update button is pressed

查看:110
本文介绍了按下“更新"按钮后,Detailsview的页面回发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了这个问题,我严重无法弄清代码出了什么问题..我已经研究了数周,但仍然存在相同的问题.

我有一个名为UserProfile.aspx的网络表单.用户登录后,他们可以在UserProfile上查看和编辑其详细信息.我使用了SqlDataSource,并将数据绑定到DetailsView.在详细信息视图中,它从3个表中检索数据,并且选择查询工作正常,并且可以成功显示数据.

但是,当我更新信息并单击DetailsView中的更新"按钮时,在按下更新"按钮后页面仍回发,但未对其进行任何更改.

以下是我获得当前登录用户(在UserProfile.aspx内部)的代码:

I having this problem, and I seriously cannot figure out what is wrong with the code.. I had researched for weeks yet the same problem keep persist.

I have a webform called UserProfile.aspx. After user logged-in, they can view and edit their particulars at UserProfile. I used a SqlDataSource and was binding the data to a DetailsView. In the details view, it retrieved data from 3 tables and the selecting query works fine and could display data successfully.

However, when I update the information and hit on the Update button in the DetailsView, it page post back after the update button is pressed with no change to it.

Following is the code which I get the current logged-in user(inside UserProfile.aspx):

<asp:SqlDataSource ID="SqlDataSource1" runat="server"

         ConnectionString="<%$ ConnectionStrings:ASPNETDBConnectionString1 %>"





           SelectCommand="SELECT aspnet_Membership.Email, Details.CustName, Details.CustNum, Details.CustRole, Details.CustStatus, Details.PName, Details.PEmail, Details.PRole, Details.WedDate, aspnet_Users.UserName FROM Details INNER JOIN aspnet_Membership ON Details.UserId = aspnet_Membership.UserId INNER JOIN aspnet_Users ON aspnet_Membership.UserId = aspnet_Users.UserId WHERE Details.UserId = @UserId"

           onselecting="SqlDataSource1_Selecting"





             UpdateCommand="UPDATE Details SET CustName = @CustName, CustNum = @CustNum, CustRole = @CustRole, CustStatus = @CustStatus, PName = @PName, PEmail = @PEmail, PRole = @PRole, WedDate = @WedDate WHERE [UserId] = @UserId">

           <SelectParameters>
               <asp:Parameter Name="UserId" type="String" />
           </SelectParameters>

           <UpdateParameters>
              <asp:Parameter Name="UserId" type="String" />
               <asp:Parameter Name="CustName" type="String"  />
               <asp:Parameter Name="CustNum" type="String" />
               <asp:Parameter Name="CustRole" type="String" />
               <asp:Parameter Name="CustStatus" type="String" />
               <asp:Parameter Name="PName" type="String" />
               <asp:Parameter Name="PEmail" type="String"  />
               <asp:Parameter Name="PRole" type="String"  />
               <asp:Parameter Name="WedDate" type="String" />
           </UpdateParameters>

       </asp:SqlDataSource>



       <br />
       <asp:DetailsView ID="DetailsView1" runat="server"

           AutoGenerateRows="False"

           DataSourceID="SqlDataSource1"

           Height="29px"

           Width="476px"

           DataKeyNames="UserName"

          >


           <Fields>
               <asp:BoundField DataField="UserName" HeaderText="UserName"

                   SortExpression="UserName" ReadOnly="True" />

               <asp:BoundField DataField="Email" HeaderText="Email"

                   SortExpression="Email" />




               <asp:BoundField DataField="CustName" HeaderText="CustName"

                   SortExpression="CustName" />

               <asp:BoundField DataField="CustNum" HeaderText="CustNum"

                   SortExpression="CustNum" />

               <asp:BoundField DataField="CustRole" HeaderText="CustRole"

                   SortExpression="CustRole" />
               <asp:BoundField DataField="CustStatus" HeaderText="CustStatus"

                   SortExpression="CustStatus" />
               <asp:BoundField DataField="PName" HeaderText="PName"

                   SortExpression="PName" />
               <asp:BoundField DataField="PEmail" HeaderText="PEmail"

                   SortExpression="PEmail" />
               <asp:BoundField DataField="PRole" HeaderText="PRole"

                   SortExpression="PRole" />
               <asp:BoundField DataField="WedDate" HeaderText="WedDate"

                   SortExpression="WedDate" />
               <asp:CommandField ShowEditButton="True" />

           </Fields>
           <PagerTemplate>
               <br />
           </PagerTemplate>
       </asp:DetailsView>



这是我的UserProfile.aspx.cs中的代码:



This is the code in my UserProfile.aspx.cs :

protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    {
        // Get a reference to the currently logged on user
        MembershipUser currentUser = Membership.GetUser();

        // Determine the currently logged on user's UserId value
        // Assign the currently logged on user's UserId to the @UserId parameter
        //access the parameter value using e.Command.Parameters
        //programmatically set the @UserId:

        e.Command.Parameters["@UserId"].Value = currentUser.ProviderUserKey.ToString();

        Response.Write(currentUser.ProviderUserKey.ToString());
    //When I run the webform, the UserId of the current logged-in user had displayed, 
    // the @UserId was not empty. 
    }

推荐答案

ConnectionStrings:ASPNETDBConnectionString1 %> " span> SelectCommand SELECT aspnet_Membership.Email,Details.CustName,Details.CustNum,Details.CustRole,Details.CustStatus,Details.PName,Details.PEmail,Details.PRole,Details.WedDate,aspnet_Users.UserName来自Details内联接aspnet_Membership ON Details.UserId = aspnet_Membership .UserId内联aspnet_Users在aspnet_Membership上.UserId= aspnet_Users.UserId,其中Details.UserId = @UserId" onselecting SqlDataSource1_Selecting " UpdateCommand =" < SelectParameters > < asp:Parameter 名称 =" 类型 字符串" / < /SelectParameters > < UpdateParameters > < asp:Parameter 名称 =" 类型 字符串" / < asp:Parameter 名称 =" 类型 字符串" > < asp:Parameter 名称 =" 类型 字符串" / < asp:Parameter 名称 =" 类型 字符串" / < asp:Parameter 名称 =" 类型 字符串" / < asp:Parameter 名称 =" 类型 字符串" / < asp:Parameter 名称 =" 类型 字符串" > < asp:Parameter 名称 =" 类型 字符串" > < asp:Parameter 名称 =" 类型 字符串" / < /UpdateParameters > < /asp:SqlDataSource > < br > < asp:DetailsView ID =" runat 服务器" AutoGenerateRows 错误" DataSourceID SqlDataSource1 " 高度 29px " 宽度 476px " DataKeyNames UserName " span> < 字段 > < asp:BoundField DataField =" HeaderText UserName " =" 用户名" 只读 =" / > < asp:BoundField DataField =" HeaderText 电子邮件" =" 电子邮件" / > < asp:BoundField DataField =" HeaderText 客户名称" SortExpression="CustName" /> <asp:BoundField DataField="CustNum" HeaderText="CustNum" SortExpression="CustNum" /> <asp:BoundField DataField="CustRole" HeaderText="CustRole" SortExpression="CustRole" /> <asp:BoundField DataField="CustStatus" HeaderText="CustStatus" SortExpression="CustStatus" /> <asp:BoundField DataField="PName" HeaderText="PName" SortExpression="PName" /> <asp:BoundField DataField="PEmail" HeaderText="PEmail" SortExpression="PEmail" /> <asp:BoundField DataField="PRole" HeaderText="PRole" SortExpression="PRole" /> <asp:BoundField DataField="WedDate" HeaderText="WedDate" SortExpression="WedDate" /> < asp:CommandField ShowEditButton =" / < /Fields > < PagerTemplate > < br > < /PagerTemplate > </asp:DetailsView>
ConnectionStrings:ASPNETDBConnectionString1 %>" SelectCommand="SELECT aspnet_Membership.Email, Details.CustName, Details.CustNum, Details.CustRole, Details.CustStatus, Details.PName, Details.PEmail, Details.PRole, Details.WedDate, aspnet_Users.UserName FROM Details INNER JOIN aspnet_Membership ON Details.UserId = aspnet_Membership.UserId INNER JOIN aspnet_Users ON aspnet_Membership.UserId = aspnet_Users.UserId WHERE Details.UserId = @UserId" onselecting="SqlDataSource1_Selecting" UpdateCommand="UPDATE Details SET CustName = @CustName, CustNum = @CustNum, CustRole = @CustRole, CustStatus = @CustStatus, PName = @PName, PEmail = @PEmail, PRole = @PRole, WedDate = @WedDate WHERE [UserId] = @UserId"> <SelectParameters> <asp:Parameter Name="UserId" type="String" /> </SelectParameters> <UpdateParameters> <asp:Parameter Name="UserId" type="String" /> <asp:Parameter Name="CustName" type="String" /> <asp:Parameter Name="CustNum" type="String" /> <asp:Parameter Name="CustRole" type="String" /> <asp:Parameter Name="CustStatus" type="String" /> <asp:Parameter Name="PName" type="String" /> <asp:Parameter Name="PEmail" type="String" /> <asp:Parameter Name="PRole" type="String" /> <asp:Parameter Name="WedDate" type="String" /> </UpdateParameters> </asp:SqlDataSource> <br /> <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataSourceID="SqlDataSource1" Height="29px" Width="476px" DataKeyNames="UserName" > <Fields> <asp:BoundField DataField="UserName" HeaderText="UserName" SortExpression="UserName" ReadOnly="True" /> <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" /> <asp:BoundField DataField="CustName" HeaderText="CustName" SortExpression="CustName" /> <asp:BoundField DataField="CustNum" HeaderText="CustNum" SortExpression="CustNum" /> <asp:BoundField DataField="CustRole" HeaderText="CustRole" SortExpression="CustRole" /> <asp:BoundField DataField="CustStatus" HeaderText="CustStatus" SortExpression="CustStatus" /> <asp:BoundField DataField="PName" HeaderText="PName" SortExpression="PName" /> <asp:BoundField DataField="PEmail" HeaderText="PEmail" SortExpression="PEmail" /> <asp:BoundField DataField="PRole" HeaderText="PRole" SortExpression="PRole" /> <asp:BoundField DataField="WedDate" HeaderText="WedDate" SortExpression="WedDate" /> <asp:CommandField ShowEditButton="True" /> </Fields> <PagerTemplate> <br /> </PagerTemplate> </asp:DetailsView>



This is the code in my UserProfile.aspx.cs :



This is the code in my UserProfile.aspx.cs :

protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    {
        // Get a reference to the currently logged on user
        MembershipUser currentUser = Membership.GetUser();

        // Determine the currently logged on user's UserId value
        // Assign the currently logged on user's UserId to the @UserId parameter
        //access the parameter value using e.Command.Parameters
        //programmatically set the @UserId:

        e.Command.Parameters["@UserId"].Value = currentUser.ProviderUserKey.ToString();

        Response.Write(currentUser.ProviderUserKey.ToString());
    //When I run the webform, the UserId of the current logged-in user had displayed, 
    // the @UserId was not empty. 
    }


这篇关于按下“更新"按钮后,Detailsview的页面回发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆