1

これが理解できることを願っています。コードを大幅に簡素化します。

マスター ページがあり、次に Default.aspx があります。このデフォルトページには次のものがあります。

<asp:Content ID="Content2" ContentPlaceHolderID="CPH_Main" Runat="Server">
    <asp:Panel ID="Panel1" runat="server">
    </asp:Panel>
</asp:Content>

わかりましたので、App_Code フォルダーにクラスがあります。default.aspx の page_load で、「Populate_Content」という関数を開始するとします。まず、アイテムが配置される Panel と、データベースから選択する ID の 2 つのパラメーターを指定します。だから、それはこのようになりますPopulate_Content(Panel1, 4)

この関数はデータベースから選択し、実行時に Linkbuttons を作成して Panel1 に追加します。また、クリック イベントのイベントハンドラも提供します。

問題は、「Populate_Content」関数を App_Code フォルダーに格納されているクリックイベントで機能させようとしていることです。App_Code フォルダー内にあるクラス ファイルでコントロール (Panel1) を選択するにはどうすればよいですか。このアプローチで選択したリンクボタンのIDを取得できます

//This the class inside App_Code
void description_Click(object sender, EventArgs e)
{
    string id = ((LinkButton)sender).ID.ToString();
    //Then i need to do this.. but i need to find the "Panel1" controller
    //Populate_Content("Panel1", id);
}

しかし、クリックイベントでも「Populate_Content」を開始する必要があります。したがって、default.aspx にある「Panel1」コントローラーを見つける必要があります。

そのように送信者でページプロパティを使用しようとしました。しかし、行きません。

Page def_page = ((LinkButton)sender).Page;
Panel panel1 = (Panel)def_page.FindControl("Panel1");

私はページのプロパティが私にコントローラがあるページを与えるだろうが、私はグーグルでこれについて何かを見つけることができない.

私はこれを間違ってやっていますか、それとも別の方法がありますか?

編集:これは Populate_content

public void Populate_content(Panel cont, string treenode)
{
var query = from n in dc.Nemanet_Navigations
            where n.UserId == userGuid && n.Nav_pID.ToString() == treenode
            orderby n.Nav_Name
            select n;

foreach (var item in query)
 {
     if (item.Nav_IsFile == true)
     {
         Panel div = new Panel();
         div.CssClass = "BulletDiv";
         cont.Controls.Add(div);

         Image picture = new Image();
         picture.ImageUrl = "~/Icons/Nytt_skjal.png";
         div.Controls.Add(picture);

         div.Controls.Add(new LiteralControl("<br/>"));

         LinkButton description = new LinkButton();
         description.Text = item.Nav_Name;
         description.ID = item.Nav_ID.ToString();
         description.Click += new EventHandler(description_Click);
         div.Controls.Add(description);


     }

     else if (item.Nav_IsFile == false)
     {
         Panel div = new Panel();
         div.CssClass = "BulletDiv";
         cont.Controls.Add(div);

         Image picture = new Image();
         picture.ImageUrl = "~/Icons/Ny_mappa.png";
         div.Controls.Add(picture);

         div.Controls.Add(new LiteralControl("<br/>"));

         LinkButton description = new LinkButton();
         description.Text = item.Nav_Name;
         description.ID = item.Nav_ID.ToString();
         description.Click += new EventHandler(description_Click);

         div.Controls.Add(description);
     }
 }

}

4

0 に答える 0