2010-03-19 21 views
0

我有一个放置在updatepanel中的中继器。当用户输入一个新的值时,中继器在没有回传的情况下被更新。是否有可能获得在JQuery中更新的行,以便我可以对它作出影响,使更改变得更加微妙?例如,我想在已更改的行上淡入一种新颜色。获取在repeater中更改的行

感谢

+0

当你说没有回传时,你的意思是没有完整的页面回发,但仍然通过更新面板回发,或有一些JS直接调整页面中的内容? – 2010-03-19 22:44:45

+0

对不起,是的。有回传,但只是部分页面更新。 – 2010-03-19 22:46:37

回答

0

感谢您的答复。我设法通过存储用户在提交之前更改的内容列表来解决问题,然后在updatepanel更新后搜索这些内容。每当找到一个项目,该行就会被更新。

1

这是很容易使一个回调一些JS使用ScriptManager在页面上。这段代码在我通过updatepanel接收到的事件的事件处理程序中为我工作。

ScriptManager.RegisterStartupScript(Me, Me.GetType(), "someKey", "someFunc();", True) 

在这种情况下关键不是那么重要,但是这将启动页面上的someFunc JS功能。如果你可以在正在更新的行上标记一个CSS类,你可以定义一个函数对这些行做一个jQuery高亮效果。我认为这是我会采取的方法。

那里的字符串“someFunc();”得到执行,并且在将它包装在适当的脚本标签中之后,True就是你不需要的。我还用它(用于特定目的)做事喜欢流行打开一个新的窗口,就像这样:

ScriptManager.RegisterStartupScript(Me, Me.GetType(), "viewReport", "window.open('" + reportURL + "','_blank');", True) 

这发生在其中生活在UpdatePanel内部的Button.Click事件,这样他们就可以点击“查看报告”按钮,并将其弹出一个单独的窗口,而无需进行整页刷新。

希望这会有所帮助,或者您可以找到一种方法来处理它。 :)

+0

嗨, 感谢您的答复,这给了我几个想法。我认为你所说的会有效,但我对标签部分不太确定。有没有办法找出哪一行正在更新?如果是这样,我可以添加CSS类,并添加您提供的代码。 – 2010-03-19 23:26:06

1

我假设你有一个文本框或某种控制在UpdatePanel中引起回发。如果是这样,那么你可以使用endrequesthandler和使用jQuery来获取该行和动画它:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler); 

function endRequestHandler(sender, args){ 
    $("#" + sender._postBackSettings.sourceElement.id).parents("tr").animate(....); 
} 

或 的jQuery 1.4.2

function endRequestHandler(sender, args){ 
    $("#" + sender._postBackSettings.sourceElement.id).parentsUntil("table").animate(....); 
} 

希望这有助于

更新:可能要通过CSS类或过滤,除非你想它发生在表中的所有回发项目