2014-01-22 4 views
0

제목이 실제로 이상하게 들리지만 실제로 발생하는 것입니다. 비슷한 문제가있는 사람을 찾았지만 답변이 없습니다. 내가 ObjectDataSource를 코드에 바인딩 된 위해 DetailsView 컨트롤이 있습니다ObjectDataSource의 UpdateMethod가 실행시 DB에 반영되지 않지만 디버깅에서 작동합니다.

<asp:DetailsView ID="DetailsView1" runat="server" BackColor="#7B7C95" BorderColor="White" BorderWidth="1px" CellPadding="2" ForeColor="White" GridLines="None" Style="height: 80%; width: 80%" AutoGenerateRows="False" DataSourceID="UserTableObjectDataSource" Font-Bold="True" Font-Names="Tahoma" AutoGenerateEditButton="True" OnItemUpdating="DetailsView1_ItemUpdating"> 
       <AlternatingRowStyle BackColor="#393847" /> 
       <FieldHeaderStyle VerticalAlign="Middle" /> 
       <Fields> 
        <asp:TemplateField ShowHeader="False"> 
         <ItemTemplate> 
          <div style="width: 50%; height: auto; overflow: auto;"> 
           <asp:Image ID="Image1" runat="server" AlternateText="No Image Added" ImageUrl='<%# Eval("ImageUrl") %>' /> 
          </div> 
         </ItemTemplate> 
         <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" /> 
        </asp:TemplateField> 
        <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" ReadOnly="True" /> 
        <asp:BoundField DataField="PackagesBooked" HeaderText="Packages Booked" SortExpression="PackagesBooked" ReadOnly="True"> 
         <ItemStyle Font-Underline="True" /> 
        </asp:BoundField> 
        <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" /> 
        <asp:BoundField DataField="PhoneNumber" HeaderText="PhoneNumber" SortExpression="PhoneNumber" /> 
       </Fields> 
       <FooterStyle BackColor="Tan" VerticalAlign="Middle" /> 
       <HeaderStyle BackColor="Tan" Font-Bold="True" VerticalAlign="Middle" /> 
       <PagerStyle BackColor="Silver" ForeColor="DarkSlateBlue" HorizontalAlign="Center" /> 
      </asp:DetailsView> 
      <asp:ObjectDataSource ID="UserTableObjectDataSource" runat="server" SelectMethod="getUser" TypeName="HolidaysForYou.DAL.DbHandler" UpdateMethod="updateUser" ValidateRequestMode="Enabled"> 
       <SelectParameters> 
        <asp:SessionParameter Name="username" SessionField="Username" Type="String" /> 
       </SelectParameters> 
       <UpdateParameters> 
        <asp:Parameter Name="Email" Type="String" /> 
        <asp:Parameter Name="PhoneNumber" Type="String" /> 
        <asp:SessionParameter Name="username" SessionField="Username" Type="String" /> 
       </UpdateParameters> 
      </asp:ObjectDataSource> 

업데이트 방법은 모양이

public static void updateUser(string Email, string PhoneNumber, string username) 
     { 
      string usernameLower = username.ToLower(); 
      string queryString = "Update [UserTable] SET Email='" + Email + "',PhoneNumber='" + PhoneNumber + "' WHERE ([Name] = '" + usernameLower + "')"; 
      using (SqlConnection connection = new SqlConnection(connectionString)) 
      { 
       SqlCommand command = new SqlCommand(queryString, connection); 
       try 
       { 
        connection.Open(); 
        command.BeginExecuteNonQuery(); 
       } 
       catch (Exception ex) 
       { 
        throw ex; 
       } 

      } 
     } 

내가 디버그 모드에서 프로그램을 실행하고 천천히 단계별로 가서, 내가 방금 Db를 변경하면 프로그램이 완벽하게 작동합니다.

는 나 또한 같은 DetailsView1_ItemUpdating 기능에서 updateUser 함수를 호출 시도 : _updateUser 정확히이 함께 할 수있는 뭔가가있을 수 있습니다 .... updateUser 동일 여전히 데이터베이스가 변경되지 않습니다이다

protected void DetailsView1_ItemUpdating(object sender, System.Web.UI.WebControls.DetailsViewUpdateEventArgs e) 
     { 
      try 
      { 
       string newEmail = (string)e.NewValues["Email"]; 
       string newPhoneNumber = (string)e.NewValues["PhoneNumber"]; 
       if (!UserHomeValidate.userUpdateValidate(newEmail, newPhoneNumber)) 
       { 
        e.Cancel = true; 
        Error.Visible = true; 
       } 
       else 
        UserHomeValidate._updateUser(newEmail, newPhoneNumber, Session["Username"].ToString().ToUpper()); 
      } 
      catch (Exception exception) 
      { 
       Utility.LogFile.CreateLogFile(exception); 
      } 
     } 

포스트 백하지만 난

답변

0

이 문제를 해결 ... .. 그 작동 방법을 알고이 극명하게 될 것이다 릴의 도움을 실망지고 해달라고 ... 은

을 추가했다

to page_Load 이전 값이 전달 될 때 다시 게시에서 바인딩되지 않도록 ...