This code snippet will demonstates how to bind the column value dnamically,based on some condition my can be binded by different entities

ASPX page

<telerik:RadGrid ID="radgrdBusinessRuleRange" runat="server" AutoGenerateColumns="false" GridLines="None" BorderWidth="0" AllowSorting="true" AllowMultiRowSelection="false" PageSize="20" AllowPaging="true" PagerStyle-Mode="NextPrev" PagerStyle-AlwaysVisible="true" OnItemCommand="radgrdBusinessRuleRange_ItemCommand" onitemcreated="radgrdBusinessRuleRange_ItemCreated" OnItemDataBound="radgrdBusinessRuleRange_ItemDatabound" OnPreRender="radgrdBusinessRuleRange_PreRender">
<MasterTableView DataKeyNames="ID, TypeID">
<Columns>
<telerik:GridTemplateColumn UniqueName="TemplateColumn" HeaderText="#">
<ItemTemplate>
<asp:Label ID="numberLabel" runat="server" />
<%# Container.DataSetIndex+1 %>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="RuleName" UniqueName="RuleName">
<ItemTemplate>
<asp:LinkButton ID="lnkEdit" runat="server" CommandName="SomeCommand" Text='<%# Eval("Name") %>'>
</asp:LinkButton>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn UniqueName="RuleType" HeaderText="Type">
<ItemTemplate>
<asp:Label ID="lblRuleType" runat="server" />
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn UniqueName="Value1" HeaderText="Value">
<ItemTemplate> <asp:Label ID="lblValue1" runat="server" Text = '<%# getValue(Container.DataItem, Eval("TypeID")) %>'/> </ItemTemplate> ///This column text can be differ based on some condition,so i have handle this in CS page
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn UniqueName="Value2" HeaderText="Max" >
<ItemTemplate>
<asp:Label ID="lblValue2" runat="server" Text='<%# Eval("MaxRange") %>'/>
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
<NoRecordsTemplate> There are No Record(s) to display. </NoRecordsTemplate>
</MasterTableView>
</telerik:RadGrid>

CS Page

Here based on Type, Name values can be bind

public string getValue(object c, object value)

{

List<BusinessRuleType> types = (List<BusinessRuleType>)ViewState["types"];

string typeName = types.Find(item => item.ID == (int)value).Type;

if (typeName == "Input")
{

return DataBinder.Eval(c, "InputValue").ToString();
}

else if (typeName == "Range")

{

return DataBinder.Eval(c, "MinRange").ToString();
}

else if (typeName == "Bool")

{

return DataBinder.Eval(c, "BoolValue").ToString();

}

else if (typeName == "Formula")
{

return DataBinder.Eval(c, "Value").ToString();
}

return "";

}