客户段调用服务器端解决。

想实现如下功能


一打开将所有记录列出,然后点查询

 

输入查询条件后,上一页自动返回查询的条数。

此功能在asp中实现很好实现。但在..net中开发还是第一次。

开发过程

1、  首先我按asp中的写法,主页上接受新页返回得值,具体函数

function opennewwindow()
 

var returnvalue=window.showModalDialog("query.aspx"); 
if (returnvalue) 
{ Form1.HidId.value=returnvalue.split("$")[0];
 Form1.HidName.value
=returnvalue.split("$")[1]; Form1.HidAuthor.value=returnvalue.split("$")[2]; 
Form1.HidSort.value
=returnvalue.split("$")[3]; 
Form1.HidPublish.value
=returnvalue.split("$")[4];
}

}


   

却发现虽然返回了值,但是代码页的sql语句却没有执行。也就是说代码页没有执行。这与asp的过程执行是不一样。

1、  此时我明白必须要在此客户段的javascript函数中执行一下服务器端的代码文件(.cs文件),如何执行呢?这里就涉及到客户段代码如何调用服务器端代码的问题了?上网查资料,有这样的写法:

却发现虽然返回了值,但是代码页的sql语句却没有执行。也就是说代码页没有执行。这与asp的过程执行是不一样。

<script>
function test()
{
    
if (真的话)
        document.all[
"btn_test"].click();
}

</script>
<input type="button" onclick="test();">
<asp:button id="btn_test" runat="server"></asp:button>

 

这样客户段当附值完毕之后就能执行服务器端控件的click事件了,所以可以拖上一个button 或者别的控件,然后对他触发一个时间就可以了,可是如果让他在界面上直接显示不美观,所以把他的visible设为false,运行,却发现不行了,因为如果把一个控件的visble设置为false的话,他到了客户段却没有了。所以如果拖显示控件是不行的,那托上一个hidden ,发现hidden不好用。

这个时候想到了Form1.submit();,用它提交一下不就行了吗。

这些应该可以了,运行。返回值好像提交了,但是没有出现正确的结果,这是为什么呢?奥。看一下Page_Load 发现加上了if (!Page.IsPostBack),对问题就在这里。不应该加这个。因为每次提交一次,都要重新加载一次,所以去掉就ok了。

至此问题解决。

原文地址:https://www.cnblogs.com/shf/p/306694.html