首页 文章

ASP.NET Reference在服务器aspx.cs服务器代码中动态创建控件

提问于
浏览
0

而且我从服务器创建的控件中的无穷无尽的问

我有不同组中的用户,每个组都有不同的用户信息 . 我正在创建一个页面来使用Telerik RadGrid管理组中的用户 . 由于网格列的未知性质,我正在服务器上完全创建网格 . 你不能在aspx页面中定义一个网格,并在服务器aspx.cs代码中添加列,各种各样的东西就像排序,过滤和获取额外的文本一样

我需要的一个功能是输出带有网格数据的excel文件 . 问题是,如何在服务器回调中引用网格 . 如果您查看Telerik Grid Export to Excel,则会有一个按钮回调,它会更改服务器上的网格值,并在ImageButton_Click中的网格控件上启动Excel导出 . 在我的例子中,RadGrid1是在Page_Init的服务器中创建的,并添加到了asp:PlaceHolder . 网格工作正常 .

有没有办法在服务器aspx.cs代码中引用服务器添加的控件 . 放置控件ID将无法编译 .

谢谢,乔治

1 回答

  • 0

    我了解到添加的控件等同于runtat =“server”的页面控件 . 要获取控件,可以在具有runat的页面上的已知容器对象上使用find控件 .

    protected void Page_Init(object source, System.EventArgs e)
           {
                 RadGrid adminGrid = new RadGrid();
                 adminGrid.NeedDataSource += new GridNeedDataSourceEventHandler(AdminGrid_NeedDataSource);
                 adminGrid.ID = "AdminGrid";
    
                 // lots of code building adminGrid 
    
                 this.GridPlaceHolder.Controls.Add(adminGrid);
           }
    
            protected void AdminGrid_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
            {
               // AdminGrid would be the variable name if the control was
               // in the page with a runat instead of added programmatically
               // with an id of AdminGrid
               RadGrid grid = this.GridPlaceHolder.FindControl("AdminGrid") as RadGrid;
               grid.DataSource = DataSource;
            }
    

相关问题