ASP.NET gridview设置为null,但在执行添加时还原为原始选择

时间:2010-03-06 23:35:40

标签: asp.net gridview webforms

我有一个“清除”按钮,它将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();
    }

1 个答案:

答案 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。