0

データセットを取得およびフィルタリングするためのユーザー コントロールを作成したいと考えています。私が抱えている問題は、入力されるコントロールがユーザーコントロールではなく、ユーザーコントロールが存在するメインページにあることです。これは、入力されるコントロールがページごとに異なるためです。

次の単純化された問題を解決する助けが得られれば、おそらくより大きな問題を解決することができます。

<body>
    <form id="form1" runat="server">
    <div>
    <uc1:uc1 ID="uc1" runat="server" />
    <asp:Label ID="lbl" runat="server"></asp:Label>
    </div>
    </form>
</body>

私がやりたいことは、ユーザーコントロールのボタンをクリックしてメインページにラベルを設定することです。私が抱えている問題は、メインページの後にユーザーコントロールのポストバックが発生することです。

ありがとう!

4

2 に答える 2

0

Parent.Page を呼び出すことで解決できました。ユーザー コントロールからさまざまなページのメソッドを呼び出せるように、インターフェイスも実装しました。それが良い解決策かどうかはわかりませんが、次のようになります。

interface IFilter
    {
        void SetLabel(string text);
    }

public partial class uc : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btn_Click(object sender, EventArgs e)
        {
            ((IFilter)Parent.Page).SetLabel("changed");
        }
    }

public partial class _Default : System.Web.UI.Page , IFilter
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {

            }
        }

        public void SetLabel(string text)
        {
            lbl.Text = text;
        }
    }
于 2013-07-04T09:49:35.077 に答える
0
  1. ユーザー コントロールでカスタム イベントを作成する
  2. ユーザーコントロールにプロパティを作成する
  3. ボタンがクリックされたときにイベントを発生させ、プロパティ値を設定します
  4. ユーザー コントロールのイベント ハンドラでメイン ページのプロパティにアクセスする
于 2013-07-04T09:39:12.450 に答える