您可以將控件添加到網格的ItemDataBound事件中的單元格。在下面的示例中,我將單元格的內容更改爲您列出的控件類型,而不是僅顯示其默認文本ID。你可以根據你的情況做同樣的事情。我在rgTest_OnNeedDataSource
方法中使用測試數據填充示例網格,然後在rgTest_ItemDataBound
方法中應用更改。
ASPX:
<telerik:RadGrid ID="rgTest" runat="server" PageSize="10" GridLines="None" AccessKey="0" Skin="Office2007"
OnNeedDataSource="rgTest_OnNeedDataSource" OnItemDataBound="rgTest_ItemDataBound" AllowFilteringByColumn="true" AllowPaging="true" AllowSorting="true" AutoGenerateColumns="false" ImagesPath="~/Skins/Office2007/Grid/Images">
<MasterTableView>
<Columns>
<telerik:GridBoundColumn UniqueName="ID" DataField="ID" SortExpression="ID" HeaderText="ID" HeaderStyle-Width="40px" FilterControlWidth="40px" AllowSorting="true" AllowFiltering="true" AutoPostBackOnFilter="false" ShowFilterIcon="true" />
<telerik:GridBoundColumn UniqueName="Value" DataField="Value" SortExpression="Value" HeaderText="Value" HeaderStyle-Width="80px" FilterControlWidth="40px" AllowSorting="true" AllowFiltering="true" AutoPostBackOnFilter="false" ShowFilterIcon="true" />
</Columns>
</MasterTableView>
</telerik:RadGrid>
aspx.cs:
protected void rgTest_OnNeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
DataTable batchChecks = new DataTable("checksRandomName");
batchChecks.Columns.Add("ID");
batchChecks.Columns.Add("Value");
batchChecks.Rows.Add(new ArrayList() { "1", "ABC" }.ToArray());
batchChecks.Rows.Add(new ArrayList() { "2", "BCD" }.ToArray());
batchChecks.Rows.Add(new ArrayList() { "3", "CDE" }.ToArray());
batchChecks.Rows.Add(new ArrayList() { "4", "DEF" }.ToArray());
DataSet dsBatch = new DataSet("rcBatch");
dsBatch.Tables.Add(batchChecks);
rgTest.VirtualItemCount = dsBatch.Tables.Count;
rgTest.DataSource = dsBatch;
}
protected void rgTest_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
if (e.Item is GridDataItem)
{
GridDataItem item = (GridDataItem)e.Item;
TableCell cell = item["Id"];
switch (cell.Text)
{
case "1":
cell.Controls.Add(new RadComboBox());
break;
case "2":
cell.Controls.Add(new RadNumericTextBox());
break;
case "3":
cell.Controls.Add(new System.Web.UI.WebControls.CheckBox());
break;
}
}
}