想实现如下功能
一打开将所有记录列出,然后点查询
一打开将所有记录列出,然后点查询
输入查询条件后,上一页自动返回查询的条数。
此功能在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];
}
}
{
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>
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了。
至此问题解决。