日期:2014-05-18  浏览次数:20547 次

页面传值问题,在线等!
我在页面传值时出现问题,具体情况如下:
我3个页面,A,B,C,其中B为一个中间页面
A页面通过this.lbnxzxh.Attributes.Add("onclick", "javascript:window.showModalDialog(B.aspx?cplb=" + Server.HtmlEncode(ddlcplb.SelectedValue) + "&pp=" + Server.HtmlEncode(ddlpp.SelectedValue) + "','','DialogHeight=650px;DialogWidth=900px;center=1;status=0;scrolling=1');"); 将cplb和pp传给B.

B页面接收通过Session["CPLB"] = Server.HtmlDecode(Request.QueryString["cplb"].ToString()).ToString();Session["PP"] = Server.HtmlDecode(Request.QueryString["pp"].ToString()).ToString();

C页面通过this.TextBox1.Text = Session["CPLB"].ToString();this.TextBox2.Text = Session["PP"].ToString();来接收这2个值

但是在运行时,发现点击lbnxzxh这个控件时,第一次没传成功,但是再点一次第一个值传成功,第二个值没成功,点第二次,2个值才都传过来,这是什么原因?
请高手指点一下,谢谢!

------解决方案--------------------
因为你用的是ddlcplb.SelectedValue这样的方式是从服务器端得到值,但javascript是不可能实时得到服务器控件的SelectValue的(ajax例外),可以考虑使用客户端脚本得到

A.aspx
HTML code
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>无标题页</title>
<script type="text/javascript">
function change(){
   var a = document.getElementById("ddlcplb").options[document.getElementById("ddlcplb").selectedIndex].value;
   var b = document.getElementById("ddlpp").options[document.getElementById("ddlpp").selectedIndex].value;
   window.showModalDialog("B.aspx?cplb=" + a + "&pp=" + b,'','DialogHeight=650px;DialogWidth=900px;center=1;status=0;scrolling=1');
}
</script>

</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DropDownList ID="ddlcplb" runat="server">
            <asp:ListItem Value="1">1</asp:ListItem>
            <asp:ListItem Value="2">2</asp:ListItem>
        </asp:DropDownList>
        <asp:DropDownList ID="ddlpp" runat="server">
            <asp:ListItem Value="3">3</asp:ListItem>
            <asp:ListItem Value="4">4</asp:ListItem>
        </asp:DropDownList>
        <asp:CheckBox ID="lbnxzxh" runat="server" />
    </div>
    </form>
</body>
</html>