How do I add column which is updated using code and can be sortable?
I have RadGrid, which get the data using Entities Framework query.
I added label (lblTest1) to get additional information which isn't returned by the query, but in this way the column isn't sortable (because it's not one of the query outcomes).
Is there a different way to update the column so it will be sortable using the field data or is there a way to sort according to this label?
aspx:
<telerik:RadGrid ID="RadGrid1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" CellSpacing="0"
DataSourceID="ObjectDataSourceIems" OnItemDataBound="RadGrid1_OnItemDataBound" GridLines="None" >
<MasterTableView DataSourceID="ObjectDataSourceItems"
<CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings>
<RowIndicatorColumn Visible="True" FilterControlAltText="Filter RowIndicator column">
<HeaderStyle Width="20px"></HeaderStyle>
</RowIndicatorColumn>
<ExpandCollapseColumn Visible="True" FilterControlAltText="Filter ExpandColumn column">
<HeaderStyle Width="20px"></HeaderStyle>
</ExpandCollapseColumn>
<Columns>
<telerik:GridBoundColumn DataField="ItemID" FilterControlAltText="ItemID" HeaderText="ItemID" SortExpression="ItemID" UniqueName="ItemID">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="FirstName" FilterControlAltText="First Name" HeaderText="First Name" SortExpression="FirstName" UniqueName="FirstName">
</telerik:GridBoundColumn>
<telerik:GridTemplateColumn HeaderText="Test1" SortExpression="" UniqueName="Test1">
<ItemTemplate>
<asp:Label ID="lblTest1" runat="server" Text="" />
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
<EditFormSettings>
<EditColumn FilterControlAltText="Filter EditCommandColumn column"></EditColumn>
</EditFormSettings>
<PagerStyle PageSizeControlType="RadComboBox"></PagerStyle>
</MasterTableView>
<PagerStyle PageSizeControlType="RadComboBox"></PagerStyle>
<FilterMenu EnableImageSprites="False"></FilterMenu>
</telerik:RadGrid>
<asp:ObjectDataSource ID="ObjectDataSourceIems" runat="server" SelectMethod="GetItemsPaged"
SelectCountMethod="GetObjectDataSourceIemsByNameCount"
TypeName="test.BLL.Items.ItemsRepsitory" EnablePaging="True" SortParameterName="sortExpression">
<SelectParameters>
<asp:ControlParameter ControlID="TextBoxSearchString" Name="nameSearchString" PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="RadioButtonListColumns" Name="searchColumn" PropertyName="SelectedValue" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
cs:
public void RadGrid1_OnItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item.ItemType != GridItemType.Item && e.Item.ItemType != GridItemType.AlternatingItem) return;
var item = (Item)e.Item.DataItem;
MoreInfoRepository moreInfoRepository = new MoreInfoRepository();
MoreInfo moreInfo = moreInfoRepository.GetMoreInfo(item.ItemID);
if (moreInfo != null)
{
var lblTest1 = (Label)e.Item.FindControl("lblTest1");
lblTest1.Text = moreInfo.Test1;
}
}
I have RadGrid, which get the data using Entities Framework query.
I added label (lblTest1) to get additional information which isn't returned by the query, but in this way the column isn't sortable (because it's not one of the query outcomes).
Is there a different way to update the column so it will be sortable using the field data or is there a way to sort according to this label?
aspx:
<telerik:RadGrid ID="RadGrid1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" CellSpacing="0"
DataSourceID="ObjectDataSourceIems" OnItemDataBound="RadGrid1_OnItemDataBound" GridLines="None" >
<MasterTableView DataSourceID="ObjectDataSourceItems"
<CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings>
<RowIndicatorColumn Visible="True" FilterControlAltText="Filter RowIndicator column">
<HeaderStyle Width="20px"></HeaderStyle>
</RowIndicatorColumn>
<ExpandCollapseColumn Visible="True" FilterControlAltText="Filter ExpandColumn column">
<HeaderStyle Width="20px"></HeaderStyle>
</ExpandCollapseColumn>
<Columns>
<telerik:GridBoundColumn DataField="ItemID" FilterControlAltText="ItemID" HeaderText="ItemID" SortExpression="ItemID" UniqueName="ItemID">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="FirstName" FilterControlAltText="First Name" HeaderText="First Name" SortExpression="FirstName" UniqueName="FirstName">
</telerik:GridBoundColumn>
<telerik:GridTemplateColumn HeaderText="Test1" SortExpression="" UniqueName="Test1">
<ItemTemplate>
<asp:Label ID="lblTest1" runat="server" Text="" />
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
<EditFormSettings>
<EditColumn FilterControlAltText="Filter EditCommandColumn column"></EditColumn>
</EditFormSettings>
<PagerStyle PageSizeControlType="RadComboBox"></PagerStyle>
</MasterTableView>
<PagerStyle PageSizeControlType="RadComboBox"></PagerStyle>
<FilterMenu EnableImageSprites="False"></FilterMenu>
</telerik:RadGrid>
<asp:ObjectDataSource ID="ObjectDataSourceIems" runat="server" SelectMethod="GetItemsPaged"
SelectCountMethod="GetObjectDataSourceIemsByNameCount"
TypeName="test.BLL.Items.ItemsRepsitory" EnablePaging="True" SortParameterName="sortExpression">
<SelectParameters>
<asp:ControlParameter ControlID="TextBoxSearchString" Name="nameSearchString" PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="RadioButtonListColumns" Name="searchColumn" PropertyName="SelectedValue" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
cs:
public void RadGrid1_OnItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item.ItemType != GridItemType.Item && e.Item.ItemType != GridItemType.AlternatingItem) return;
var item = (Item)e.Item.DataItem;
MoreInfoRepository moreInfoRepository = new MoreInfoRepository();
MoreInfo moreInfo = moreInfoRepository.GetMoreInfo(item.ItemID);
if (moreInfo != null)
{
var lblTest1 = (Label)e.Item.FindControl("lblTest1");
lblTest1.Text = moreInfo.Test1;
}
}