将多种数据类型绑定到Gridview中的单个列

时间:2011-07-13 03:21:07

标签: c# .net gridview datagrid

任何人都可以告诉我,使用TemplateColumns,GridView是否可以使用此示例中的详细内容。 http://www.codeproject.com/KB/webforms/CustomDataGridColumn.aspx

我需要动态生成一个GridView,它可能不需要在列中有一个数据类型。说第1列可以有Checkbox或TextBox控件(当然是基于逻辑)

我尝试在InstantiateIn()中实现ITemplate并添加自定义控件,但据我所知 - 这里的绑定是在每个列级而不是在每个Item级别上。

我怎样才能实现这个目标?

提前致谢。如果问题需要进一步澄清,我可以删除我的代码。

1 个答案:

答案 0 :(得分:2)

是的,Telerik的RadGrid支持这一点。

相同的代码只能进行微小的更改。例如,ListItemType变为GridItemTypeDataGridItem变为GridDataItem等。此外,Telerik创建控件的方式意味着某些索引需要更改。例如,他们的ItemDataBound事件有以下代码:

  string dataType = e.Item.Cells[0].Text;

但是使用Telerik RadGrid,需要:

 string dataType = e.Item.Cells[2].Text;

除了那些微小的变化之外,它都适用于RadGrid。

注意:当我看到来自Telerik的代码示例时,它们通常会采用不同的路径。我看到它们为单元格提供自定义内容的方法是将自定义逻辑放在ItemCreated事件中。这将被调用每一行。因此,您可以让列的模板包含所有可能的控件,然后在ItemCreating事件中,通过根据您的逻辑将正确的控件设置为Visible来修改该模板的实例(这是您链接到的文章中使用的方法)。或者,您可以在该事件中仅为正确的控件类型创建单个特定控件。 ItemCreated事件的Here is the documentation以及Telerik的代码示例,它修改了每行的LinkBut​​ton,但可以使用相同的方法。