我有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)?
答案 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();
}