无法在Update面板中更新Gridview以进行更新

时间:2013-12-06 09:56:58

标签: c# asp.net gridview

我已经尝试了我能找到的所有博客和论坛答案,但我仍然被困了几天,想知道是否有人可以帮忙。

我的问题是我在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#。

2 个答案:

答案 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应用程序中的任何更新查询,请查看以下提示。

    更新后
  • 检查内容是否更新/不使用断点。
  • 如果数据库中的表已完全更新成功,则检查grid-view / list-view的属性,将其auto-post-back设置为true。
  • 如果您正在使用更新面板,请设置事件基础重新加载/不重新加载(仅重新加载面板/刷新面板)
  • 有时页面本身不会生成回发,这可能是原因(它没有存储更新的字段值/加载值...)

我希望您再次按照调试应用程序所需的所有步骤...