【问题标题】:How can I refresh only a GridView in a parent window with JavaScript?如何使用 JavaScript 仅刷新父窗口中的 GridView?
【发布时间】:2011-05-27 08:55:38
【问题描述】:

我有两个 aspx 文件用于在销售中添加/删除产品。

  1. islemler.aspx
  2. SatisTedarik.aspx

我在islemler.aspx 中有一个GridView,这个gridView 的名字是islemlerGridView 当在islemlerGridView 上选择一行时会出现一个按钮,这个按钮的名字是islemDetayGorButton

当点击islemDetayGorButton 时,SatisTedarik.aspx 被打开。在 SatisTedarik.aspx 上有许多元素,例如标签、文本框、下拉列表、网格视图,用户可以通过这个 SatisTedarik.aspx 窗口添加/删除产品到销售/从销售中删除(销售显示在 islemlerGridView)。

我需要做的是,当通过 SatisTedarik.aspx 更改有关销售的某些内容时更新 islemlerGridView

我发现了这个问题Passing value from popup window to parent form's TextBox 并用 JavaScript 尝试了一些东西,我得说我没有 JavaScript 经验。 我尝试刷新开启器窗口,在我的条件开启器窗口是 islemler.aspx 我在 SatisTedarik.aspx 上使用了以下代码:

<script type="text/javascript">
        function f2() {
            opener.document.getElementById("TextBox1").value = "hello world";//this is just from that example in the link

            opener.document.location.reload(true);//that is how I refresh islemler.aspx

        } 
</script> 

这是使用f2()的按钮

<input type="button" value="return hello world" onclick="f2();" />

是的,这段代码会刷新 islemler.aspx,但通过 SatisTedarik.aspx 生成的变化不会反映在 islemlerGridView 上。

例如,

  1. 假设islemlerGridView显示 销售 ID 和销售总金额。
  2. 假设我有促销 X 售出的产品 A 和产品 一个需要 10 块钱。
  3. 我选择销售 X islemlerGridViewislemDetayGorButton 出现然后我 单击此按钮,它会打开 SatisTedarik.aspx。
  4. 在 SatisTedarik.aspx 我正在添加 产品 B 花费 5 美元 出售 X 并保存它。

最后,我单击使用f2() 的按钮并刷新islemler.aspx 但销售X 的销售总金额单元格仍然是10 钱,但是我需要它是15 钱,因为我在该销售中添加了一个新产品.

所以我的第一个问题是我应该怎么做才能获得预期的结果?已解决

问题: 第二,有什么办法可以只刷新 islemlerGridView 而不能刷新整个页面?

好的,事实证明这对我的第一个问题有效

window.opener.location.href = window.opener.location.href; 

所以我的第一个问题现在有了答案。

问题: 有什么方法可以只刷新islemlerGridView 而不能刷新整个页面?

(我在 IE9 和 Mozilla Firefox 4 中都试过了)

我检查并发现了一些不错的链接:

  1. Javascript - Refresh Parent Window?
  2. refresh parent after closing pop up window
  3. Refreshing parent window
  4. Refresh the parent window from the child window in javascript
  5. Refresh parent window from child window using javascript

【问题讨论】:

  • Errrr 您能否以我们可以实际看到问题所在的方式组织您的问题?
  • @Aron 好吧,在我的问题之前有一个 Question 词 :)

标签: c# javascript asp.net gridview


【解决方案1】:
function ReloadParent()
{
    if (window.parent) 
    { 
          window.parent.location.replace(window.parent.location.href);
    }
}

此代码将从您的子页面重新加载您的父页面.....

【讨论】:

  • 是的,感谢 Dot Net Developer 我处理了这个问题。但是,我想刷新父页面上的 GridView不是整个页面,如果可能,你有什么想法吗?
  • 我在子页面上添加了这段代码,但是这段代码没有重新加载父页面。
  • 首先检查它是否在子页面上调用,如果它给你错误那么它会抛出什么错误?
  • Well Dot Net Developer 感谢我使用window.opener 而不是window.parent 时的响应。但是,父页面上的Gridview 仍然没有显示更新的信息。
【解决方案2】:

我创建了一个名为 GridRefreshPanel 的 UpdatePanel,并将网格放入该面板并使用它

function f2() {
              window.opener.__doPostBack('GridRefreshPanel.ClientID', '');    
              //window.opener.__doPostBack('islemlerGridView.ClientID', ''); //this is also working without GridRefreshPanel 
        } 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多