简体   繁体   English

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

[英].NET prevent loading usercontrol data on default.aspx

I have default.aspx page and have a four user controls which contains gridview. 我有default.aspx页面,并有四个包含gridview的用户控件。 I show this user controls with modalpopupextender (ajaxtoolkit), when users click on some button on default.aspx. 当用户单击default.aspx上的某些按钮时,我将使用modalpopupextender(ajaxtoolkit)显示此用户控件。 Problem is, that all usercontrols data (actually table rows) are loaded when page is started so my page response very slow, because this gridviews contains a lot of data. 问题是,启动页面时会加载所有用户控件数据(实际上是表行),因此我的页面响应非常慢,因为此gridviews包含很多数据。

So when I run my page, click ctrl+U to get source code, there is loaded whole data from usercontrols. 因此,当我运行我的页面时,单击ctrl + U以获得源代码,就会从usercontrols中加载整个数据。

My code: 我的代码:

default.aspx Default.aspx的

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

houseUC.ascx 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 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();
}

So how can I manage to do that usercontrol loads when I click on button "Show All" and not before (with default.aspx)? 因此,当我单击“全部显示”按钮而不是之前(使用default.aspx)时,如何管理用户控件?

Move your code from the page load event into the show all button click event. 将代码从页面加载事件移至“显示所有按钮”单击事件。 Then create a hidden dummy Target controlID. 然后创建一个隐藏的虚拟Target controlID。 Call the show method of the popup after loading the grid view. 加载网格视图后,调用弹出窗口的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();
       }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM