使用相同的提交添加和编辑ASP.NET和C#中的数据库值

时间:2013-11-11 07:19:32

标签: c# asp.net forms postback

我使用相同的提交按钮添加新行,并在ASP.NET表单中编辑数据库表的行值。我使用CommandArgument来更改正在应用的方法。

protected void btnSave_Click(object sender, EventArgs e)
    {
       if (!CheckProfileComplete())
        {
            btnSave.CommandArgument = "new";
            btnSave.Text = "Save";
        }
        else
        {
            btnSave.CommandArgument = "update";
            btnSave.Text = "Update";
        }
    }
protected void btnSave_Click(object sender, EventArgs e)
    {
        if (!Page.IsValid)
            return;
        string strCmd = this.btnSave.CommandArgument;
        if (strCmd.ToLower() == "new")
        {
             //Add new Record
        }
        else if(strCmd.ToLower() == "update")
        {
             //Update existing record.
        }
     }

如果Add New显示空白表单,则在Update中会显示一个表单,其中包含先前添加到数据库表的数据,用户可以在其中编辑值然后保存。在检查了一些其他参数后,CommandArgument在页面加载时更新。

Add New方法运行正常,但我无法在Update的情况下修改值。我的意思是表单在呈现给用户进行编辑之前发布了动态填充的相同值。单击“保存(更新模式)”按钮后,未显示任何更改。即使在更改和回发值之后,表单似乎将其先前的状态作为当前状态。

例如,如果tbName.Text最初从数据库中读取时值foo

用户对其进行了编辑,现在tbName.Text在回发之前已经bar

但是,当表单在调试模式下发布时,tbName.Text显示foo作为当前值代替bar

2 个答案:

答案 0 :(得分:0)

您需要确定发生的事件,这使您需要更改按钮的工作方式。一旦你知道了,那么,在那个事件中你取消订阅按钮并订阅其他东西。

private void OnMyEvent()
{
   button1.Click -= "theEventIDoNotWant";
   btnSave.Click += new EventHandler(theEventIWant);
}

答案 1 :(得分:0)

据我所知它应该是这样的:

<asp:LinkButton ID="btnSave" runat="server" CommandArgument="Add" OnCommand="btnSave_Click">Save</asp:LinkButton>

和代码背后:

protected void btnSave_Click(object sender, CommandEventArgs e)
{
    if(string.Equals(e.CommandArgument,"Add"))
        {
            //do save logic here
            btnSave.CommandArgument = "Edit";
            btnSave.Text = "Update";
        }

        if (string.Equals(e.CommandArgument, "Edit"))
        {
            //do update logic here
            btnSave.Text = "Update done";
        }   
}

您只需要实现一个事件处理程序,并使用CommandEventArgs检查您使用该事件发送的参数。

希望这会对你有所帮助。

干杯!