首页 | IT新闻 | 硬件 | 操作系统 | 开发 | 网络编程 | 数据库 | 热门框架 | 网络安全 | 组网 | 建站指南 | 网页制作 | 特效 | 实用技巧 | 服务器 | 办公 | QQ | 探索 | 社区

  • 技术部落
  • 部落首页 > 程序开发 > .NET专栏 > 正文
  • UpdatePanel弹出提示的几种方法
      2008-5-9  来源:博客网  编辑:Jsbulo  热度:

    1、关于updatepanel注册js

      最近在项目里需要用到altas,本人也是新手,老用最简单的updatepanel,在注册脚本时也遇到了困难,无法注册。本来是在updatepanel中放了一个gridview,偶想在girdview中一个模板列点击弹出一个窗体,注册window.open()来解决问题。本来不是在updatepanel中,所以用ClientScript.RegisterStartupScript直接注册挺好使。

      在拖入updatepanel后发现无法注册脚本,想想RegisterStartupScript本来是在页面加载时启动js的,在updatepanel中部分刷新,肯定是无法注册的。

      后来发现了ScriptManager.RegisterStartupScript方法,挺好使,呵呵。

      ScriptManager.RegisterClientScriptBlock(UpdatePanelName, typeof(UpdatePanel), "标识key", "脚本", true);

      下面是一个demo,模板列定义如下:

    <asp:TemplateField HeaderText="客户ID">

         <ItemTemplate>            

           <asp:LinkButton ID="linkbtnCID"  runat="server"  Text=’<%# Eval("CID") %>’ CommandName="linkbtnCID"   >                      </asp:LinkButton>

          </ItemTemplate>

    </asp:TemplateField>

      在GridView对应的RowCommand事件中如下操作:

    protected void gvClientInfo_RowCommand(object sender, GridViewCommandEventArgs e)

        {

            //如果是linkButton被点击

            if(e.CommandName.Equals("linkbtnCID"))

            {

                LinkButton lbtn = (LinkButton)e.CommandSource;

                GridViewRow dgRow = (GridViewRow)lbtn.Parent.Parent;

                string tmpText = lbtn.Text.ToString();          

                tmpText ="window.open(’customerDetailsInfo.aspx?CID=" + tmpText + "’ ,’newwindow’,’height=550,

                    width=700, menubar=no ’)";

                ScriptManager.RegisterStartupScript(this.UpdatePanel2, this.GetType(), "click", tmpText, true);      

            }

        }

      2、关于RegisterStartupScript,RegisterClientScriptBlock

            RegisterStartupScript 将 js嵌入到页面的底部,</form> 的前面

            RegisterClientScriptBlock 将 js嵌入到页面中开启元素 <form> 后面

      3、关于“该行已经属于另一个表”错误

           这个问是出现在不同dataTable之间的行复制出现的问题。

           看这个代码:

       DataTable tmpdt = sodo.getDataTable("text", strSql, sp);             

       dt.Rows.Add(tmpdt.Rows[0]);

      这个明显的错误就是tmpdt的行是一个对象引用,相当于一个指针,错误是难免的,可有以下解决办法:

      DataTable tmpdt = sodo.getDataTable("text", strSql, sp);             

      1、 dt.Rows.Add(tmpdt.Rows[0].ItemArray);

      2、 dt.ImportRow(tmpdt.Rows[0]);