日期:2014-05-17  浏览次数:20554 次

asp.net 调用js函数的问题
.aspx文件中

JScript code
 <script language="JavaScript" type="text/javascript">

        function ConfirmBack(a, b) {

            window.opener.document.getElementById('<%= Request["qid1"] %>').value = a;
            window.opener.document.getElementById('<%= Request["qid2"] %>').value = b;

            window.close();

        }
    </script>


我用双击Gridview行的方法可以实现功能,代码如下
C# code

    protected void gvDetail_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                string x = e.Row.Cells[0].Text;
                
                e.Row.Attributes.Add("OnDblClick", "ConfirmBack('" + e.Row.Cells[0].Text + "','" + e.Row.Cells[1].Text + "')");
            }
        }




然后我在gridview中加入了一列checkbox,用于多选,通过按钮去调用函数

 
C# code
protected void btnOK_Click(object sender, EventArgs e)
        {
            foreach (GridViewRow GR in this.gvDetail.Rows)
            {
                CheckBox CB = (CheckBox)GR.FindControl("CheckBox1");
                if (CB.Checked)
                {
                    ids = ids + GR.Cells[1].Text + ","; ;
                    names = names + GR.Cells[2].Text + ",";
                }
            }
      //注:以上正确的取得了值

            Response.Write("<script language=javascript>ConfirmBack('" + ids + "','" + names + "')</script>");

}





用这种方法就不行,只是闪了一下就没反应。

应该是这条语句有问题 
Response.Write("<script language=javascript>ConfirmBack('" + ids + "','" + names + "')</script>");
大家帮忙看看,非常感谢哈

------解决方案--------------------
有一个先执行和后执行的问题。
不要使用 Response.Write

用RegisterStartupScript 试试


------解决方案--------------------
Response.Write("<script language=javascript>window.onload=function(){ConfirmBack('" + ids + "','" + names + "');}</script>");
------解决方案--------------------
window.onload就是在页面加载时执行,不加这个肯定不会执行啊。在jquery里时$(function(...))