我已经尝试了我能找到的所有博客和论坛答案,但我仍然被困了几天,想知道是否有人可以帮忙。
我的问题是我在UpdatePanel中有一个Gridview,链接到SQLDataSource。
在第一次加载页面时(不是回发)我从三个数据库表中提取信息并将其写入我数据库中的新半临时表,然后设置SQLDataSource以从这个新表中选择所有表并显示在我的gridview中。这很有效。
当显示表格时,用户可以编辑或选择一行。如果选择了一行,它会突出显示它并写入临时表,该行被标记为突出显示(以便以后重新渲染),这样就可以了。
如果用户点击编辑,我将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()等功能,但无论我从哪里运行刷新代码都不会刷新我的gridview甚至停止显示更新按钮和chnage回到编辑按钮(注意:如果我点击刷新按钮它)。
这是我自己的函数中的刷新代码:
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();
}
我还尝试使用链接按钮Labeled'Update'并设置其CommandName =“Update”这实际更新并将gridview重置为EditIndex = -1(即再次显示编辑按钮)但通过我的代码进行调试不运行任何_PreRender(),_ RowUpdated等函数,因此不会将Gridview数据更新为最新值,因为它实际上不会重新渲染。
任何帮助都是最受欢迎的,因为头发耗尽了。
非常感谢。
使用MS SQL,ASP.NET4和C#。
答案 0 :(得分:2)
这个论坛必定有一些神奇的东西,因为我一发布这个问题就意识到'如果我把这个添加到这里'会有什么感觉和瞧!现在都在工作:)
无论如何要回答我的问题并在这里帮助其他人现在是我的refreshGV代码
{
DailySheetGV.DataSourceID = null;
DailySheetGV.EditIndex = -1;
DailySheetGV.DataBind();
UpdatePanel0.DataBind();
UpdatePanel0.Update(); // new line added to get updatepanel to refresh
SqlDataSource1.SelectCommand = "SELECT * FROM ReportTempTable";
DailySheetGV.DataSourceID = "SqlDataSource1";
DailySheetGV.EditIndex = -1;
DailySheetGV.DataBind();
}
当我有时间看看我真正需要哪条线时,我会再尝试一下。
干杯
答案 1 :(得分:1)
在将表更新回temp-table / some table检查天气之前,值是否真正更新回数据库。对于Web应用程序中的任何更新查询,请查看以下提示。
我希望您再次按照调试应用程序所需的所有步骤...