提交流读取文件时,我显示MessageBox
。然而,即使点击好后,盒子仍然会出现。当我按住Enter键以飞过框时,只从文件中添加一个字段。
继承我的代码隐藏
if (FileTypeDDL.SelectedValue == "Calendar Dates" && fileName == "calendar_dates.txt")
{
//Check if full txt has already been uploaded
SEPTA_DS.CalendarDatesTBLDataTable GetCalendarDates = (SEPTA_DS.CalendarDatesTBLDataTable)cdta.GetDataByCategory(Convert.ToString(Session["Cat"]));
var category = Convert.ToString(CategoryDDL.SelectedItem);
var service_id = Convert.ToString(row["service_id"]);
var date = Convert.ToString(row["date"]);
var exception_type = Convert.ToString(row["exception_type"]);
if (GetCalendarDates.Rows.Count < 1)
{
int insertData = Convert.ToInt32(cdta.InsertCalendarDates(category, service_id, date, exception_type));
}
else
{
DialogResult result = MessageBox.Show("This will overwrite the current list. Are you sure you wish to continue?", "Important Message",
MessageBoxButtons.YesNo,
MessageBoxIcon.Exclamation);
if (result == DialogResult.Yes)
{
int updateData = Convert.ToInt32(cdta.UpdateCalendarDates(category, service_id, date, exception_type, Convert.ToInt32(GetCalendarDates.Rows[0]["CalendarID"])));
}
else
{
Response.Redirect("~/Import.aspx");
}
}
}
我只想让框出现一次,然后在'是'上插入数据。为什么以及如何实现这一目标。
编辑:我刚刚意识到此代码在foreach
循环内,这就是它重复发生的原因。我的新问题;我如何只显示此MessageBox
一次?
答案 0 :(得分:2)
正如其他人所说,您不希望在ASP.NET页面中使用WinForms MessageBox方法。它“有效”,但正在发生的是服务器上出现消息框。您看到消息框是因为您正在本地开发,但如果此代码被推送到生产站点,则访问者将看不到任何内容 - 页面只会挂起,等待坐在Web服务器上的某人单击“确定”按钮! : - )
要向用户显示消息框,您需要使用客户端脚本。您应该查看两个JavaScript函数:
我认为你有一个用户点击的按钮开始这个过程。查看使用Button / LinkButton / ImageButton控件的OnClientClick属性。首先,尝试将其设置为以下内容:
OnClientClick="return confirm('Are you sure you want to do this?');"
当用户单击按钮时,将显示带有“确定/取消”选项的消息框。如果他们单击取消,则消息框返回false并且停止回发。如果他们单击“确定”,则会通过。
现在,您的情况更具挑战性,因为您只想在某些条件成立时显示此信息,即 GetCalendarDates.Rows.Count&gt; = 1 。棘手的部分是你需要在回发之前通过OnClientClick属性设置这个JavaScript。因此,也许在Page_Load中,您可以以编程方式设置按钮的OnClientClick属性,但仅限于感兴趣的条件成立。类似的东西:
void Page_Load(...)
{
if (GetCalendarDates.Rows.Count >= 1)
myButton.OnClientClick = "return confirm('...');";
}
我不确定如何或何时设置GetCalendarDates,但是每当设置GetCalendarDates时,最好让上面的逻辑出现。我认为这是一个GridView?如果是这样,请考虑将其添加到GridView的DataBound事件处理程序。
快乐编程!
答案 1 :(得分:0)
选项:
答案 2 :(得分:0)
您使用的是System.Windows.Forms.MessageBox吗?
如果是这样,那么你不能在ASP.Net中使用它,它只适用于Windows会话。 (您将收到未登录的错误)
你问题上的ASP.Net标签是不正确的。