1

ここで、ページからコントロールを取得する方法について、MSDN でいくつかの調査を行いました。 http://msdn.microsoft.com/en-us/library/yt340bh4(v=vs.100).aspx

また、静的コンテキストからページ参照を取得する方法について調査しました。 静的クラスから Page の現在のインスタンスにアクセスする

しかし、ページ コントロールのリストをループしようとすると、null が表示され、グリッドビューが表示されません。

以前にデータベース呼び出しで入力したデータテーブルにデータバインドしているため、今はそのグリッドビューが必要です。内部でこれを行っている静的メソッドは WebMethod であるため、次のようになります。

    [WebMethod(EnableSession = true)]
    [ScriptMethod]
    public static string viewApps(){}

これが私の静的メソッドのC#コードです

            GridView applications = new GridView();
            Page masspage = HttpContext.Current.CurrentHandler as Page;
            foreach(Control childcontrol in masspage.Controls)
            {
                if(childcontrol is GridView){
                    applications = childcontrol as GridView;
                }
            }

            applications.DataSource = dt;
            applications.DataBind();

簡単だと思っていたのですが、そうでもないようです。ID に基づいて GridView への参照を取得する方法があれば、それも役立ちます。

これが私のasp.netコードです。マスターページから継承したページです。

 <asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="true" UpdateMode="Always">
        <ContentTemplate>
             <asp:GridView ID="ApplicationsGridView" runat="server"

                      AutoGenerateColumns="True" >

               <%--Styling and column info omitted --%>

                  </asp:GridView>
           </ContentTemplate>
   </asp:UpdatePanel>
4

1 に答える 1

0

あまり正しくありませんが... gridview コントロールは保護されています。保護されたコントロールを返すパブリック プロパティ GridView MyGrid を定義します (デザイナーを編集しないため)。それ以外の場合は、再帰が必要です

foreach(Control childcontrol in masspage.Controls)   
{
    if(childcontrol is GridView)
    {
        applications = childcontrol as GridView;
    }
    else
    {
        // call this function recursively
    }
}
于 2013-11-27T16:46:12.013 に答える