在webform 里用PlaceHolder动态加载News.ascx 
Control ctrl = Page.LoadControl("News" + ".ascx"); 
this.ContentPlaceHolder.Controls.Add(ctrl); webform.aspx源码: 
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"> 
</asp:ScriptManager> 
<asp:UpdatePanel ID="webformUpdatePanel" runat="server"> 
<ContentTemplate> 
<asp:PlaceHolder ID="ContentPlaceHolder" EnableViewState="false" runat="server"></asp:PlaceHolder> 
</ContentTemplate> 
</asp:UpdatePanel> News.ascx源码如下: 
<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server"> 
</asp:ScriptManagerProxy> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
<ContentTemplate> 
<div id="divToolbar" style="background-color: #cdcdcf; width: 100%"> 
<asp:Menu ID="menNews" runat="server" Font-Size="12px" Orientation="Horizontal" OnMenuItemClick="menNews_MenuItemClick" 
Height="30px" Width="100%" ForeColor="#40508e"> 
<Items> 
<asp:MenuItem Text="保存" ToolTip="保存" ImageUrl="~/images/保存.bmp" Value="Save"></asp:MenuItem> 
<asp:MenuItem Text="放弃" ToolTip="放弃" ImageUrl="~/images/取消.bmp" Value="Cancel"></asp:MenuItem> 
<asp:MenuItem Text="退出" ToolTip="退出" ImageUrl="~/images/关闭.bmp" Value="Close"></asp:MenuItem> 
</Items> 
</asp:Menu> 
</div> 
<asp:GridView ID="GridView1" Font-Size="14px" runat="server" Width="100%" OnPageIndexChanging="GridView1_PageIndexChanging" 
AllowPaging="True" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound" 
OnSelectedIndexChanged="GridView1_SelectedIndexChanged" BackColor="White" RowStyle-Height="30px" 
OnDataBinding="GridView1_DataBinding" OnSelectedIndexChanging="GridView1_SelectedIndexChanging"> 
<Columns> 
<asp:BoundField DataField="ID" HeaderText="ID" SortExpression="Name"> 
<ItemStyle Width="20px" /> 
</asp:BoundField> 
<asp:BoundField DataField="n_title" HeaderText="标题" SortExpression="n_title"> 
<ItemStyle Width="150px" /> 
</asp:BoundField> 
</Columns> 
</asp:GridView> 
<asp:UpdatePanel ID="UpdatePanel2" runat="server"> 
<ContentTemplate> 
<div id="divItem"> 
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> </div> 
</ContentTemplate> 
</asp:UpdatePanel> 
</ContentTemplate> 
</asp:UpdatePanel> 为什么我点击Grid取数据的时候会引起页面刷新
怎么做才会不刷新

解决方案 »

  1.   

    我用的你的代码  没有刷新呀。
    你看错了吧,你的 News.ascx 里只有一个控件,看上去像是全部刷新了。
      

  2.   

    default10.aspx:    protected void Page_Load(object sender, EventArgs e)
        {
            Control ctrl = Page.LoadControl("News" + ".ascx");
            this.ContentPlaceHolder.Controls.Add(ctrl); 
        }News.ascx:
     
    public partial class News : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            GridView1.DataSource = SqlHelper.getDataTable("select top 10  lang_code ID, string_value n_title from gui_text");
            GridView1.DataBind();    }
        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
            GridView1.DataSource = SqlHelper.getDataTable("select top 10  lang_code ID, string_value n_title from gui_text");
            GridView1.DataBind();    }
        protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        {    }
        protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        {    }
        protected void GridView1_DataBinding(object sender, EventArgs e)
        {    }
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {    }
    }
      

  3.   

    通常我们说页面刷新(其实这个词有歧义很容易跟浏览器的刷新操作混淆),是指在ie上可以看到页面下载状态栏有一个蓝条一闪而过。当你使用iframe来达到页面上局部刷新,实际上也会有这个蓝条一闪而过。而当你使用UpdataPanel来达到页面上局部刷新,你看不到这个蓝条。这个蓝条显示过程会让某些用户看着有点不舒服。所以,你可以看看你的ie此状态栏有没有那个蓝条,没有就是UpdataPanel实际起作用了。但是,使用UpdataPanel应该使用在真正的局部上。如果你把整个页面都放入一个UpdatePanel,或者虽然有很多小的局部的UpdatePanel但是 UpdateMode属性没有设置为Conditional,那么虽然你看不到蓝条,但是页面大面积的更新、闪烁,这也是很差劲的,没有达到ajax方法的真正目的。有些人以为给整个页面上所有变动的控件外放置一个UpdatePanel就是所谓ajax了,应该认识到这是一个很大的误解。
      

  4.   

    如果你的页面很简单,简单到只有一个GridView控件而没有其它的东西(其实随便看看一个实际的应用界面,除了一个二维表格以外还要有几十甚至上百个其它控件作为衬托),那么你似乎只能把这个GridView放到一个UpdatePanel中。如果你使用一个在页面刷新时并不显示长时间的“白屏”的新的浏览器,可能看上去有没有UpdatePanel的作用并不明显。实际上,设计界面时尽量缩小UpdatePanel的范围,一个页面上可能有5个甚至50个UpdatePanel,更能体会到Ajax的作用。ascx是组件,可以随时拖入aspx或者其它ascx。你写的ascx,如果我拖入两个进入aspx,则会出错,因为一个页面上不能有多个ScriptManager。可见你在设计ascx时欠考虑。
      

  5.   

    "ascx是组件,可以随时拖入aspx或者其它ascx。你写的ascx,如果我拖入两个进入aspx,则会出错,因为一个页面上不能有多个ScriptManager。可见你在设计ascx时欠考虑。"
    在ascx 页面不是可以放ScriptManagerProxy吗?这样可以实现。
      

  6.   

    如果我给外面的webformUpdatePanel 设置 UpdateMode属性为Conditional 那它Trigger又是什么呢?
      

  7.   

    参考  :
    http://hi.baidu.com/guke1991/blog/item/360896a3203fb4aacaefd0f7.html
      

  8.   


    谢谢SP1234,我以前都只是用了一个UpdatePanel.哈哈,这次我想我要用多点了.