1

我想使用 RadGrid 根据我拥有的数组动态打印表格。问题是我是 Telerik 和 ASP.NET 的新手。

我会在 PHP 中做的是:

<?php 
$data = stuff;
?>
<table>
   <?php foreach($data as $dataOne): ?>
      <tr><td><?php echo $dataOne; ?></td></tr>
    <?php endforeach; ?>
</table>

现在我想在 ASP.NET 中使用 RadGrid 做同样的事情。

谢谢。

编辑:

数据以带有“对象”的 XML 形式返回,每个都有几个字段,包括名称和数字。我希望表格显示所有内容。我可以将 XML 解析为多个数组(每个数组包含一列)、对象或其他任何内容。我需要知道如何将其放入 RadGrid。

4

1 回答 1

1

ASP.NET 中的等效代码:

var data = getDataFromDB(); 

telerikGrid.DataSource=data;
telerikGrid.DataBind();

你将在 aspx 页面上定义你的 gridview:

<telerik:radgridview id="telerikGrid" runat="server" />

更新:

我将给您一个使用自定义业务对象的示例,因为您说您可以解析 XML 并创建对象。

具有如下的类结构:

public class Employee
{
    public string EmployeeName {get;set;}
    //... And more properties
    Public Child[] Children {get;set;}
}

public class Child
{
   public string Name {get;set;}
   //and more properties
}

并假设您解析 XML 以构造一个Employee[]您希望以类似于以下方式在网格上显示的内容:

-------------------------------
| Employee Name  |   Children |
+-----------------------------+
|  John          |   Peter    |
|                |   Charles  |
+----------------+------------+
| Michael        |   Anna     |
+-----------------------------+

您的标记应如下所示:

<telerik:radgridview id="telerikGrid" runat="server" OnItemDataBound="telerikGrid_ItemDataBound">
 <MasterTableView AutoGenerateColumns="false">
      <Columns>
       <telerik:GridBoundColumn DataField="EmployeeName" HeaderText="EmployeeName">
       </telerik:GridBoundColumn>
       <telerik:GridTemplateColumn>
            <ItemTemplate>
                <telerik:radgridview runat="server" id="gridEmpChildren">
                   <MasterTableView AutoGenerateColumns="false">
                      <Columns>
                          <telerik:GridBoundColumn DataField="Name"                                       HeaderText="Children">
       </telerik:GridBoundColumn>
                      </Columns>
                   </MasterTableView>
                </telerik:radgridview>
            </ItemTemplate>
       <telerik:GridTemplateColumn>
 </MasterTableView>
</telerik:radgridview>

您向 ItemDataBound 事件添加一个处理程序并按此方式实现它(注意上面的标记,它定义了此处理程序):

protected void telerikGrid_ItemDataBound(object sender, GridItemEventArgs e) 
{ 
    if (e.Item is GridDataItem) 
    { 
        GridDataItem item = (GridDataItem)e.Item; 
        RadGridView childrenGrid = (RadGridView)item.FindControl("gridEmpChildren"); 
        childrenGrid.DataSource= item["Children"];//See class Employee
        childrenGrid.DataBind();
    } 
 } 

现在,一个完整的示例实现将呈现我上面示例中显示的网格,如下所示:

 //Sample data
 Employee[] employees = new Employee[] {
    new Employee{
            EmployeeName="John",
            Children= new Child[]{
                    new Child{Name="Peter"},
                    new Child{Name="Charles"}
                    }
        }
        ,new Employee{
            EmployeeName="Michael",
            Children=new Child[]{
                    new Child{Name="Anna"}
                    } 
        }
};

telerikGrid.DataSource=employees;
telerik.DataBind(); 

注意:没有任何代码经过测试,如果它不能立即工作,请让我放松一下。它肯定接近这个。

于 2012-04-19T16:40:48.187 回答