0

我正在使用相同的提交按钮来添加新行,并在 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.Textbar回发之前。

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

4

2 回答 2

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 检查您随事件发送的参数。

希望这对您有所帮助。

干杯!

于 2013-11-11T08:04:04.547 回答
0

您需要确定发生了哪个事件,这使您需要更改按钮的工作方式。一旦您知道了这一点,那么在该事件中,您取消订阅按钮并将其订阅到其他内容。

private void OnMyEvent()
{
   button1.Click -= "theEventIDoNotWant";
   btnSave.Click += new EventHandler(theEventIWant);
}
于 2013-11-11T07:48:44.283 回答