在我的应用程序中,我有一个网格视图和一个保存任务按钮。当我单击保存任务我的按钮时,网格视图不刷新但当我单击浏览器的刷新按钮时,网格刷新并自动在数据库中添加另一个任务。我想要的是在单击保存任务按钮时刷新网格,而在单击浏览器刷新按钮时不添加任务。
{{1}}
答案 0 :(得分:1)
你在帖子上做的是:
Imo你不应该更新Page_Load上的网格视图。你应该只在GET上显示它(!IsPostBack)。 在saveTask_Click结束时,您必须再次更新网格视图。
因此,将显示网格视图所需的代码移动到您可以在其他场合调用的方法:
protected void ShowGridView() {
String pId = HttpUtility.UrlDecode(Request.QueryString["pID"]);
string query = "Select * from Tasks where S_ID=" + labelID.Text;
SqlConnection con = new SqlConnection(str);
SqlCommand com = new SqlCommand(query, con);
con.Open();
SqlDataReader sdr = null;
sdr = com.ExecuteReader();
dt = new DataTable();
dt.Columns.AddRange(new DataColumn[5] { new DataColumn("Id"), new DataColumn("Description"), new DataColumn("Status"), new DataColumn("Sprint_ID"), new DataColumn("pID") });
while (sdr.Read())
{
dt.Rows.Add(sdr["T_ID"].ToString(), sdr["T_Description"].ToString(), sdr["T_Status"].ToString(), labelID.Text,pId);
}
GridView1.DataSource = dt;
GridView1.DataBind();
con.Close();
}
然后在你的Page_Load中调用它!IsPostBack
if (!IsPostBack)
{
ShowGridView();
PanelTaskForm.Visible = false;
Panel1.Visible = false;
}
else if(IsPostBack){
PanelTaskForm.Visible = true;
Panel1.Visible = true;
}
然后在saveTask_Click中添加行后,您可以调用ShowGridView()来查看新结果。
if (com.ExecuteNonQuery() == 1)
{
TaskStatus.Text = "Task Successfully Saved ";
//GridView1.DataBind();
ShowGridView();
}
else
{
TaskStatus.Text = "Task not Saved";
}