C# 如何使弹出窗口的内容仅在';s出现了
我有一个用户控件,它通过一个C# 如何使弹出窗口的内容仅在';s出现了,c#,asp.net,postback,C#,Asp.net,Postback,我有一个用户控件,它通过一个SimpleModal弹出窗口(JQuery)显示,这个用户控件从数据库获取一些数据并显示它们(记录的详细信息) 问题在于,即使父页面是隐藏的,该用户控件也会在每次回发时来回获取数据 我想知道我是否能让它只有在弹出窗口出现时才能获取数据 我试图用falseforVisible属性将其放入面板中,并在打开弹出窗口时将其更改为true,但它仍然调用从数据库获取数据的页面加载 任何想法 当用户激活弹出窗口并用从请求中检索到的值填充弹出窗口时,发出ajax请求。当用户激活弹出
SimpleModal
弹出窗口(JQuery)显示,这个用户控件从数据库获取一些数据并显示它们(记录的详细信息)
问题在于,即使父页面是隐藏的,该用户控件也会在每次回发时来回获取数据
我想知道我是否能让它只有在弹出窗口出现时才能获取数据
我试图用false
forVisible
属性将其放入面板中,并在打开弹出窗口时将其更改为true
,但它仍然调用从数据库获取数据的页面加载
任何想法 当用户激活弹出窗口并用从请求中检索到的值填充弹出窗口时,发出ajax请求。当用户激活弹出窗口并用从请求中检索到的值填充弹出窗口时,发出ajax请求。有几种方法可以解决此问题
1.在服务器端执行所有操作。
您可以使用ajax(以前的atlas)工具包的模态dilog。将其放入更新面板中。创建一个触发器,并在该触发器中指定事件-这将是您调用db的时间。它只会发生一次,你可以控制你想做什么
二,。使用客户端ajax。
我喜欢这种方式,因为使用UpdatePanel(性能)会带来很多开销。
保持jQueryUI模式对话框的灵活性,在打开时使用客户端事件将其挂钩。然后,您必须对Web服务执行.ajax调用(可以托管在aspx页面中),或者执行.get:
$.ajax({
url: url,
data: data,
success: success,
dataType: dataType
});
或
然后,您的aspx页面可以简单地:
Write(MyRepository.GetDetail(q=>q.ID==1234.ToString());
Resonse.End()
当然,如果您只需要在模式对话框中以简单字符串的形式显示该数据,而不需要在业务端检查对象,就可以这样做
这里详细描述了这两种api:
现在,如果您确实想要对从db检索的细节记录进行自定义,那么您可能需要研究使用getJSON。
更多示例如下:
有几种方法可以解决这个问题
1.在服务器端执行所有操作。
您可以使用ajax(以前的atlas)工具包的模态dilog。将其放入更新面板中。创建一个触发器,并在该触发器中指定事件-这将是您调用db的时间。它只会发生一次,你可以控制你想做什么
二,。使用客户端ajax。
我喜欢这种方式,因为使用UpdatePanel(性能)会带来很多开销。
保持jQueryUI模式对话框的灵活性,在打开时使用客户端事件将其挂钩。然后,您必须对Web服务执行.ajax调用(可以托管在aspx页面中),或者执行.get:
$.ajax({
url: url,
data: data,
success: success,
dataType: dataType
});
或
然后,您的aspx页面可以简单地:
Write(MyRepository.GetDetail(q=>q.ID==1234.ToString());
Resonse.End()
当然,如果您只需要在模式对话框中以简单字符串的形式显示该数据,而不需要在业务端检查对象,就可以这样做
这里详细描述了这两种api:
现在,如果您确实想要对从db检索的细节记录进行自定义,那么您可能需要研究使用getJSON。
更多示例如下: