Datagrid刷新无法正常工作

时间:2011-12-09 18:10:17

标签: c# asp.net

我有一个datagrid来显示SQL表中的一些信息,然后是一个简单的文本框和按钮,允许用户将记录添加到数据库中。问题是,当用户点击添加时,数据网格应该更新,但它没有任何想法?有问题的代码如下:

protected void Page_Load(object sender, EventArgs e)
    {
        username.Text = Session["username"].ToString();
        datetime.Text = DateTime.Now.ToString();

        BindData();
    }

protected void BindData()
    {
        string SQLQuery = "SELECT * From Filters";

        OleDbConnection MyConn = new OleDbConnection(ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString);

        DataSet resultsDataSet = new DataSet();
        MyConn.Open();

        OleDbDataAdapter DataAdapter = new OleDbDataAdapter(SQLQuery, MyConn);
        DataAdapter.Fill(resultsDataSet);
        DGFilters.DataSource = resultsDataSet;
        DGFilters.DataBind();

        if (resultsDataSet.Tables[0].Rows.Count == 0)
        {
            no_records.Visible = true;
            DGFilters.Visible = false;
        }
        else
        {
            DGFilters.Visible = true;
            no_records.Visible = false;
        }

        MyConn.Close();
    }

    protected void AddFilter_Click(object sender, EventArgs e)
    {
        OleDbConnection MyConn = new OleDbConnection(ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString);

        MyConn.Open();

        string SQLInsert = "INSERT INTO Filters (FilterString) VALUES ( '" + FilterToAdd.Text + "')";

        OleDbCommand MyCmd = new OleDbCommand(SQLInsert, MyConn);

        MyCmd.ExecuteNonQuery();

        MyConn.Close();

        DataBind();

    }

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

AddFilter_Click方法的底部,您需要调用自己的BindData(),以便可以使用新记录刷新网格。现在你正在调用DataBind(),它是基类Control上的一个方法,它正在应用于整个Web表单。我猜这不会做太多事情。

此外,在Page_Load方法中,您可以更改此内容:

BindData();

if (!Page.IsPostBack)
     BindData();

这样当用户点击“添加”按钮时,您就不会将网格绑定两次。