2

私は滑らかにしようとしていて、このユーザーコントロールをページ全体をカバーする div に入れています。ただし、検索ボタンをクリックすると、完全なポストバックが表示されます。ポストバックせずにグリッドビューを更新する方法についてのアイデアはありますか?

そして、明確にするために。次のコントロールは 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>

ところで、コントロールはプレースホルダーにあります

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

コードビハインドから呼び出されます。

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

    ControlContainer.Controls.Add(mycontrol);
4

1 に答える 1

3

私はついに問題を理解しました。

コード ビハインドを使用してユーザー コントロールを追加しても、正しく動作しません。

適切に機能させるには、ユーザー コントロールの 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;
}

更新モードが設定されたら。すべてが正常に機能します。

于 2012-09-13T16:08:10.080 に答える