usercontrol ascx文件中的Updatepanel没有更新gridview

时间:2012-09-11 18:59:34

标签: c# asp.net gridview

我正试图变得光滑,我将这个用户控件放在一个覆盖整个页面的div中。 但是当我点击搜索按钮时,我得到一个完整的回发。 关于如何让它不回发并只更新gridview的任何想法?

只是要清楚。以下控件位于ascx文件中。这是在aspx页面中调用的。

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="PropertyViewAddEntity.ascx.cs"
Inherits="UserControls_PropertyViewAddEntity" %>

<p>Search for State City County zip</p>
        <asp:Panel ID="Panel1" runat="server" DefaultButton="Button2ae">
            <p>
                <asp:TextBox ID="TextBox1ae" runat="server" Width="500px"></asp:TextBox>
                <asp:Button ID="Button2ae" runat="server" Text="Search"  CausesValidation="false" />
            </p>
        </asp:Panel>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
            <ContentTemplate>
                <asp:GridView ID="GridView2ae" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource3ae"
                    OnSelectedIndexChanged="GridView2ae_SelectedIndexChanged">
                    <Columns>
                        <asp:CommandField ShowSelectButton="True" />
                        <asp:BoundField DataField="zipcodeid" HeaderText="zipcodeid" SortExpression="zipcodeid" />
                        <asp:BoundField DataField="zip_code" HeaderText="zip_code" SortExpression="zip_code" />
                        <asp:BoundField DataField="state" HeaderText="state" SortExpression="state" />
                        <asp:BoundField DataField="city_alias_name" HeaderText="city_alias_name" SortExpression="city_alias_name" />
                        <asp:BoundField DataField="county_name" HeaderText="county_name" SortExpression="county_name" />
                    </Columns>
                </asp:GridView>

            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="Button2ae" EventName="Click" />
            </Triggers>
        </asp:UpdatePanel>

btw控件位于占位符

<asp:PlaceHolder ID="ControlContainer" runat="server"/>

并从后面的代码中调用。

Control mycontrol = LoadControl("~/UserControls/PropertyViewAddEntity.ascx");

    ControlContainer.Controls.Add(mycontrol);

1 个答案:

答案 0 :(得分:3)

我终于找到了问题。

为了使事情正常工作,通过代码隐藏添加用户控件将无效!

为了使事情正常工作,您必须在页面上声明usercontrol,以便您可以访问usercontrol的UpdateMode =“Conditional”属性。

<%@ Register TagPrefix="my" TagName="AddEntity" Src="~/UserControls/PropertyViewAddEntity.ascx"  %>
<my:AddEntity Visible="false" ID="test1" runat="server" ClientIDMode="Inherit" UpdateMode="Conditional" />

我将控件的Visible属性设置为false,以便我可以通过按钮单击显示它。

<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />

在我背后的代码中我做到了。

protected void Button1_Click(object sender, EventArgs e)
{   
    test1.Visible = true;
}

设置更新模式后。一切都按预期工作。