我使用相同的提交按钮添加新行,并在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
答案 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检查您使用该事件发送的参数。
希望这会对你有所帮助。
干杯!