2013-04-05 70 views
0

感谢您在高级中查看我的问题。通过数据库中的ID更新信息 - ASP.NET/C#

我想从保存按钮更新数据库中的信息。

目前我已经保存了它,但它将更新另存为新行。

我已经得到了希望更改的行的ID,但我正在努力使其工作。

ASP.NET:

<asp:Button runat="server" ID="btnSave" CssClass="btnSubmit" Text="Save" OnClick="btnSave_Click" /> 

C#:

protected void btnSave_Click(object sender, EventArgs e) 
{ 
    int ItemID = 0; 
    var Item = Placements.GetPlacementByExpiry(ItemID, false); 
    if (Item == null) 
    { 
     Item = new Placements(); 
    } 

    Item.CategoryID = Convert.ToInt32(ddlCategory.SelectedValue); 
    Item.Title = txtTitle.Text; 
    Item.Company = txtCompany.Text; 
    Item.Location = txtLocation.Text; 
    Item.Duration = txtDuration.Text; 
    Item.SalaryFrom = Convert.ToDecimal(txtSalaryFrom.Text); 
    Item.SalaryTo = Convert.ToDecimal(txtSalaryTo.Text); 
    Item.SalaryType = ddlSalaryType.Text; 
    Item.Description = txtDescription.Text; 
    Item.Responsibilities = txtResponsibilities.Text; 
    Item.Requirements = txtRequirements.Text; 
    DateTime ExpiryDate = DateTime.ParseExact(txtExpiryDate.Text, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture); 
    Item.ExpiryDate = ExpiryDate; 
    Item.DateCreated = DateTime.Now; 

    if (Item.ID == 0) 
    { 
     Placements.CreatePlacement(Item); 
    } 
    else 
    { 
     Placements.UpdatePlacement(Item); 
    } 

    mvEdit.SetActiveView(vwList); 
} 

我试图把一个命令的参数上的按钮,并在后端改变了它,但收到以下错误:

Error 1 No overload for 'btnSave_Click' matches delegate 'System.EventHandler' C:\Users\laura\Documents\Visual Studio 2010\WebSites\ThirdYearProject\tools\controls\placements\edit.ascx 239 

我一直在尝试修复它一段时间,但我不知道我做错了什么!任何帮助,将不胜感激。

+0

你确定你从Placements.GetPlacementByExpiry(项ID,FALSE)现有项目;,而不是新的项目,你可以添加断点看它是否是一个新的ITEM。或者,在写入数据库之前输出您的ITEM信息并进行检查。 – ljh 2013-04-05 17:53:30

回答

0

我认为Item.ID == 0不是0或null或其他值。请检查它的价值。

+0

对不起,我可能应该补充一点,我在之前执行的函数中有这个(btnSave.CommandArgument = PlacementID.ToString();)但我不知道如何将这些信息传递给我上面写的函数? – lauw0203 2013-04-05 18:39:34

+0

int PlacementID = Convert.ToInt32(btnSave.CommandArgument);而不是0作品。不知道为什么我这样做是诚实的! – lauw0203 2013-04-05 18:46:30

+0

请用int.tryparse代替转换。 Tryparse不会抛出异常。 – qamar 2013-04-06 00:19:26

0

这是一个错字吗?不应该这条线

btnSave_Click+= new System.EventHandler(this.btnSave_Click); 

被移动到可能的Page_Load事件,甚至是Pre_Init?

而且我觉得下面的答案应该是帮助你

Sample program Event bubbling in Asp.Net