我有一个数据网格来显示来自 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();
}
有什么想法吗?
最佳答案
在 AddFilter_Click
方法的底部,您需要调用自己的 BindData()
以便可以使用新记录刷新网格。现在您正在调用 DataBind()
,这是基类 Control 上的一个方法,它被应用于您的整个 Web 表单。我猜这并没有起到什么作用。
此外,在您的 Page_Load 方法中,您可以更改此设置:
BindData();
到
if (!Page.IsPostBack)
BindData();
这样当用户点击“添加”按钮时您就不会绑定(bind)两次网格。
关于c# - 数据网格刷新不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8449858/