【发布时间】:2013-12-06 09:56:57
【问题描述】:
我已经尝试了所有我能找到的博客和论坛答案,但我仍然坚持了几天,想知道是否有人可以帮忙。
我的问题是我在 UpdatePanel 中有一个 Gridview,链接到 SQLDataSource。
第一次加载页面时(不是回发),我从三个数据库表中提取信息并将其写入数据库中的一个新的半临时表,然后将 SQLDataSource 设置为从这个新表中选择全部并显示在我的网格视图中。这很好用。
当表格显示时,用户可以编辑或选择一行。如果选择了一行,它将突出显示它并将该行标记为突出显示的临时表写入(以便以后重新渲染),这可以正常工作。
如果用户点击编辑,我将 Gridview 设置为编辑模式:
protected void DailySheetGV_RowEditing(object sender, GridViewEditEventArgs e)
{
// put Gridview into edit mode //
rowEditted = e.NewEditIndex;
DailySheetGV.EditIndex = rowEditted;
SqlDataSource1.SelectCommand = "SELECT * FROM ReportTempTable";
DailySheetGV.DataBind();
// ## //
}
这很好用。
我的问题是,当用户单击更新时,我将更新后的值写入我的表,这工作正常,但对于我来说,我无法让它刷新 Gridview使用更新后的表的值重新绑定数据(即从 tempTable 重新创建 gridview)。
到目前为止,我已经尝试使用自动生成的更新按钮,它贯穿所有 _RowUpdating()、_PreRender() 等函数,但无论我从哪里运行刷新代码,它都不会刷新我的网格视图甚至停止显示更新按钮并更改回编辑按钮(注意:如果我点击刷新按钮,它会这样做)。
这是我自己函数中的刷新代码:
private void rebindGV()
{
DailySheetGV.DataSourceID = null;
DailySheetGV.EditIndex = -1;
DailySheetGV.DataBind();
UpdatePanel0.DataBind();
SqlDataSource1.SelectCommand = "SELECT * FROM ReportTempTable";
DailySheetGV.DataSourceID = "SqlDataSource1";
DailySheetGV.EditIndex = -1;
DailySheetGV.DataBind();
}
我也尝试过使用标记为“更新”的链接按钮并设置其 CommandName="Update" 这实际上会更新并将 gridview 重置为 EditIndex=-1(即再次显示编辑按钮)但通过我的代码进行调试并没有'不运行任何 _PreRender()、_RowUpdated 等函数,因此不会将 Gridview 数据更新为最新值,因为它实际上并没有重新渲染。
如果没有头发可以拔掉,我们会非常感谢任何帮助。
非常感谢。
使用 MS SQL、ASP.NET4 和 C#。
【问题讨论】: