0

私は ASP.net のことは初めてで、ポストバックに関していくつか質問があります。

私はこのようなシナリオを持っています:

1) 内部にパネルがある Web 上のグリッドがあります。

2) これを呼び出して、Web ユーザー コントロールを使用してパネルを「挿入」します。

 Control ctlControl;
 ctlControl = LoadControl("~/UserControls/ChequeCreation.ascx");
 pnlTransaction.Controls.Add(ctlControl);

3) 2 つのボタンを提供する Web ユーザー コントロール。1 つは「更新」で、もう 1 つは「リセット」です。

問題は次のようなものです:

私が達成したかったのは、「更新」ボタンを押すと、DB に何かが更新されるということですか? しかし、「更新」または「リセット」ボタンを押した後のようです。Web ユーザー コントロールがなくなっているか、見つかりません。ゲストの場合、ポストバックの問題が原因ですか? あれは正しいですか?

if(!postback) を試しましたが、まだ機能しません。

どうすればこれを克服できますか?私はすでに約1日頭を悩ましていますか?

本当にありがとうございます。

よろしく

リャンク:

PS:私の英語レベルについて申し訳ありません。エラーや間違いを遠慮なく声に出してください。

4

4 に答える 4

1

データ列をテンプレート列に変換してから、Webユーザーコントロールをそこにドラッグアンドドロップできます。

これにより、「uc1:webUserControle1」がコード内にある次のコードチェックのような結果になります。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="SqlDB">
            <Columns>
                <asp:TemplateField HeaderText="ID" SortExpression="ID">
                    <EditItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Eval("ID") %>'></asp:Label>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("ID") %>'></asp:Label>
                        <uc1:webUserControle1 ID="WebUserControle1_1" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="name" HeaderText="name" SortExpression="name" />
            </Columns>
        </asp:GridView>
于 2011-12-05T09:42:09.587 に答える
1

ASP.NET は、ポストバック間で動的に追加されたユーザー コントロールを保持しません。これが、それが消えている理由です。ページを作成するたびにコントロールを追加する必要があります。ただし、イベントを発生させたい場合は、コントロール ツリーが初期化されているときに追加し、元のコントロール ID を復元する必要があります。これらのリンクは完全な説明を提供します http://www.4guysfromrolla.com/articles/092904-1.aspxおよびhttp://avinashsing.sunkur.com/2011/02/24/dynamic-controls-viewstate-and-postback/

于 2011-12-05T10:26:54.477 に答える
1

Page_Init または Page_Load で毎回ユーザー コントロールをリロードする必要があります。次に、ボタン クリック イベントを取得できます。その後、ユーザー コントロールは失われません。

private void LoadUserControl(){

   string controlPath = LastLoadedControl;

    if (!string.IsNullOrEmpty(controlPath)) {
        PlaceHolder1.Controls.Clear();
        UserControl uc = (UserControl)LoadControl(controlPath);
        PlaceHolder1.Controls.Add(uc);
    }
}

protected void Page_Load(object sender, EventArgs e) {  
   LoadUserControl();
}
于 2011-12-05T10:28:28.710 に答える
1

AJAX を使用している場合は、UCT デザイン ページに updatepanel を追加してみてください

于 2011-12-05T09:48:42.163 に答える