none
关于Iframe的问题 RRS feed

  • 问题

  • 主页中有两个iframe(Name分别为IframeA和IframeB);
    IframeA中有Textbox和button;
    IframeB中有一个Hidden和gridview.
    IframeA中Button事件把Textbox中的值添加到数据库中的同时,把Textbox的值传给IframeB中的Hidden.
    IframeA的CS文件中的Button_Click事件中执行添加数据库同时又加入此语句 
        string strJS = "<script>parent.frames('IframeB').location.reload();</script>";
      Page.ClientScript.RegisterStartupScript(this.GetType(), "OK", strJS);//加如此语句的作用是去刷新IframeB

    IframeB的CS文件中的page_laod里面执行的代码是:
        SqlDataAdapter da = new SqlDataAdapter("select * from GoodsName where GoodsName like '%" + @hidden.value + "%'", conn);
      da.Fill(ds, "GoodsName");
      GridView1.DataSource = ds.Tables[0];
      GridView1.DataKeyNames = new string[] { "Number" };
      GridView1.DataBind();
    我的目的是:在IframeA中执行添加和查询.添加textbox的值进数据库的同时,查询的数据用'格式化/用CSS美化'后的gridview(用了模板列)显示在IframeB中的.
    我现在可以达到的效果是:点IframeA中的button可以把数据添加进数据库并同时刷新IframeB,如果将{select * from GoodsName where GoodsName like '%" + @hidden.value + "%'}这段代码为模糊查找数据库中的记录,hidden.value的值是从IframeA中传过来的,也是今天的问题所在!;当把select * from GoodsName where GoodsName like '%" + @hidden.value + "%'}改为{select * from GoodsName where GoodsName like '家%'}不是动态获取,就可以在IframeB中的gridview显示数据库中内容为家***的查询结果.
    我的问题是:IframeB中的hidden控件值如何获取等于IframeA中的Textbox控件的值,当IframeA中点Button时,把Textbox的值传给IframeB中的hidden,IframeB加载时会自动按照hidden.value的值去数据库进行查询,并显示在IframeB中的gridview中.

    是否可以用这段代码去获取Textbox的值呢? Button1.OnClientClick = "parent.frames['iframeB'].document.getElementById('hiddenID').value=document.getElementById('" + TextBox1.ClientID + "').value;parent.frames['iframeB'].document.forms[0].submit();";

    获取了值后,在IframeB的CS文件中的page_Load中写什么代码来获取数据库的模糊查询!

    是以下这段代码吗?

        SqlDataAdapter da = new SqlDataAdapter("select * from GoodsName where GoodsName like '%" + @hidden.value + "%'", conn);
      da.Fill(ds, "GoodsName");
      GridView1.DataSource = ds.Tables[0];
      GridView1.DataKeyNames = new string[] { "Number" };
      GridView1.DataBind();

    用这段代码事实上是不行的,是不是我的思路有问题?还有其他更好的办法吗?请别用AJAX.

    2012年5月29日 2:06

答案

  • 首先我假设你的第一步——Button1.OnClientClick可以获取正确的数值。那么请在对应的Page_Load事件中这样做(接受submit传来的hiddenField参数):

    private void Page_Load(……)
    {
       if(IsPostBack)
       {
            ViewState["value"] = Request.Form["隐藏域的ClientId"]==null?String.Empty: Request.Form["隐藏域的ClientId"].ToString()
       }
    }

    然后再赋值:

     SqlDataAdapter da = new SqlDataAdapter("select * from GoodsName where GoodsName like '%" + ViewState["value"].ToString()+ "%'", conn);
      da.Fill(ds, "GoodsName");
      GridView1.DataSource = ds.Tables[0];
      GridView1.DataKeyNames = new string[] { "Number" };
      GridView1.DataBind();


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年5月29日 2:54