제목이 실제로 이상하게 들리지만 실제로 발생하는 것입니다. 비슷한 문제가있는 사람을 찾았지만 답변이 없습니다. 내가 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);
}
}
포스트 백하지만 난