我有一个“清除”按钮,它将gridview数据源设置为null并绑定它。但是,当我向它添加一个新条目时,旧的行似乎再次出现(除了新行)...不确定我做错了什么....
gv.DataSource = null;
gv.DataBind();
上面不应该清除gridview的状态吗? TIA
protected void btnAddFactor_Click(object sender, EventArgs e)
{
if (txtfactor.Text != "")
{
if (ViewState["factor"] == null)
{
DataTable dtbl = new DataTable();
dtbl.Columns.Add("Factor");
dtbl.Columns.Add("Weight");
DataRow dr = dtbl.NewRow();
dr[0] = txtfactor.Text.Trim();
dr[1] = Convert.ToInt32(ddlWeight.SelectedValue);
dtbl.Rows.Add(dr);
ViewState["factor"] = dtbl;
}
else
{
DataTable dtbl = (DataTable)(ViewState["factor"]);
DataRow dr = dtbl.NewRow();
dr[0] = txtfactor.Text.Trim();
dr[1] = Convert.ToInt32(ddlWeight.SelectedValue);
dtbl.Rows.Add(dr);
ViewState["factor"] = dtbl;
}
gvFactor.DataSource = (DataTable)(ViewState["factor"]);
gvFactor.DataBind();
//gvFactor.Rows.
}
}
protected void btnClearFactor_Click(object sender, EventArgs e)
{
gvFactor.DataSource = null;
gvFactor.DataBind();
}
答案 0 :(得分:2)
您确定代码正在执行吗?
如果没有运行,则会应用viewstate并且行(或其他任何东西)不会消失。
请包含包含该代码的方法和相关标记。
<强>更新强>:
好的,我正在查看您添加的代码,您将内容保存在viewstate中,当您清除gridView并重新绑定时,您还需要清除ViewState(ViewState["factor"] == null
),否则当您添加其他旧的一行被拾取,以及它仍然在viewState:
protected void btnClearFactor_Click(object sender, EventArgs e)
{
ViewState["factor"] == null
// this line you shouldn't need
gvFactor.DataSource = null;
gvFactor.DataBind();
}
如果清除ViewState设置,则也不需要将DataSource设置为null。