.NET阻止在default.aspx上加载usercontrol数据

时间:2014-03-12 13:20:04

标签: c# asp.net gridview user-controls bigdata

我有default.aspx页面并且有四个用户控件,其中包含gridview。 当用户点击default.aspx上的某个按钮时,我用modalpopupextender(ajaxtoolkit)显示这个用户控件。问题是,当页面启动时,所有用户控制数据(实际是表行)都被加载,因此我的页面响应非常慢,因为这个gridviews包含大量数据。

因此,当我运行我的页面时,单击ctrl + U获取源代码,从usercontrols加载整个数据。

我的代码:

的Default.aspx

<%@ Register Src="houseUC.ascx" TagName="house1" TagPrefix="uc1" %>
..
<uc1:house1 ID="house" runat="server" />

houseUC.ascx

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

 <asp:Button ID="buttonHouse" runat="server" Text='Show all' /> //Button which appears in default.aspx where I pute <uc1:house1..>.

<cc1:ModalPopupExtender runat="server"  ID="modalHouse" TargetControlID="buttonHouse"
    PopupControlID="panelHouse" CancelControlID="closeHouse">
</cc1:ModalPopupExtender>

<asp:HiddenField runat="server" ID="hfModalVisible" />
<asp:Panel runat="server" ID="panelHouse">
    <asp:UpdatePanel ID="UpdatePanelZaposleni" runat="server" UpdateMode="Conditional">
  <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
...
</asp:UpdatePanel>
button for close..
</asp:Panel/>

houseUC.ascx.cs

protected void Page_Load(object sender, EventArgs e)
 {
        //get data from sql query..
         SqlDataAdapter sda = new SqlDataAdapter(cmd);
         DataSet datas = new DataSet();
         sda.Fill(datas);
         GridView1.DataSource = ds.Tables[0];
         GridView1.DataBind(); //GRIDVIEW CONTAINS 300+rows
        con.Close();
}

那么当我点击按钮&#34;显示所有&#34;时,我怎么能设法做这个用户控制加载?而不是之前(使用default.aspx)?

1 个答案:

答案 0 :(得分:1)

将代码从页面加载事件移动到show all按钮单击事件中。 然后创建一个隐藏的虚拟Target controlID。加载网格视图后调用弹出窗口的show方法。

<asp:HiddenField ID="HiddenDummy" runat="server" />
<cc1:ModalPopupExtender runat="server"  ID="modalHouse" TargetControlID="HiddenDummy"
PopupControlID="panelHouse" CancelControlID="closeHouse">

     protected void ShowAllButton_Click(object sender, EventArgs e)
       {
         //get data from sql query..
           SqlDataAdapter sda = new SqlDataAdapter(cmd);
           DataSet datas = new DataSet();
           sda.Fill(datas);
           GridView1.DataSource = ds.Tables[0];
           GridView1.DataBind(); //GRIDVIEW CONTAINS 300+rows
           con.Close();
           modalHouse.show();
       }