1-888-365-2779
+1-888-365-2779
Try Now
More in this section

Forums / Developing with Sitefinity / 5.1 sp1 module display choice value in datagrid

5.1 sp1 module display choice value in datagrid

2 posts, 1 answered
  1. Markus
    Markus avatar
    2763 posts
    Registered:
    25 Nov 2005
    09 Aug 2012
    Link to this post
    I added a choices field to my module and want to display the value of this in a datagrid on my .ascx file.

    The module is called Mitarbeiter (employees). 

    I found some related tables to this module on the database bud 

    a) did not figure out how that works
    b) where all possible values are stored
    c) how to get the value to display in the grid

    This is my code for the grid. The part in Question is called Funktion.

    <telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="False" CellSpacing="0" GridLines="None" AllowSorting="True" ShowGroupPanel="True" >
        <ClientSettings AllowDragToGroup="True">
        </ClientSettings>
    <MasterTableView>
    <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="Vorname" FilterControlAltText="Vorname" HeaderText="Vorname" UniqueName="Vorname">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="Nachname" FilterControlAltText="Nachname" HeaderText="Nachname" UniqueName="Nachname">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="Telefon" FilterControlAltText="Telefon" HeaderText="Telefon" UniqueName="Telefon">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="Mail" FilterControlAltText="Email" HeaderText="E-Mail" UniqueName="Email">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="Funktion" FilterControlAltText="Funktion" HeaderText="Funktion" UniqueName="Funktion">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="Taetigkeit" FilterControlAltText="Taetigkeit" HeaderText="Tätigkeit" UniqueName="Taetigkeit">
            </telerik:GridBoundColumn>
        
        </Columns>
     
    <EditFormSettings>
    <EditColumn FilterControlAltText="Filter EditCommandColumn column"></EditColumn>
    </EditFormSettings>
    </MasterTableView>
     
    <FilterMenu EnableImageSprites="False"></FilterMenu>
    </telerik:RadGrid>


    This is my codebehind

    namespace SitefinityWebApp.UserControls
    {
        public partial class mitarbeiter_liste : System.Web.UI.UserControl
        {
            protected void Page_Load(object sender, EventArgs e)
            {
     
                if (!Page.IsPostBack)
                {
                    // Fetch a collection of "live" and "visible" mitarbeiter items.
                    var myCollection = GetDataItems();
     
                    // Binds the collection of Person items to the RadGrid
                    RadGrid1.DataSource = myCollection;
                    RadGrid1.DataBind();
                               }
                 
            }
     
            // Gets a collection of "live" and "visible" mitarbeiter items.
            public IQueryable<DynamicContent> GetDataItems()
            {
                DynamicModuleManager dynamicModuleManager = DynamicModuleManager.GetManager();
                Type mitarbeiterType = TypeResolutionService.ResolveType("Telerik.Sitefinity.DynamicTypes.Model.Mitarbeiter.Mitarbeiter");
     
                // Fetch a collection of "live" and "visible" mitarbeiter items.
                var myCollection = dynamicModuleManager.GetDataItems(mitarbeiterType).Where(i => i.Status == Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Live && i.Visible == true);
     
                return myCollection;
            }
           
        }
    }

    QUESTION 1
    Any idea how I get the value of Funktion (see screenshot sf_funktion.png to display in the grid?


    QUESTION 2
    I could not find a table with all the possible values of the choise field. Any idea where they are stored, just out of curiosity. 

    Answer: Looking a bit throu the tables I found sf_mb_dynamic_module_field where the values are  stored.

    Markus

  2. Boyan Barnev
    Boyan Barnev avatar
    1429 posts
    Registered:
    16 Aug 2017
    13 Aug 2012
    Link to this post

    Hello Markus,

    I've replied to the support thread you submitted on the same issue, however for your convenience I'm also pasting our reply below:
    "

     RadGrid's databinding does not understand array types for column values.
    ChoiceField persist the values in a String[] by default, so in order to achieve the desired functionality you can easily use a GridTemplateColumn:

    <telerik:GridTemplateColumn HeaderText="Choice" >

                    <ItemTemplate>

                        <asp:Literal ID="Funktion" runat="server" />

                    </ItemTemplate>

                </telerik:GridTemplateColumn>

     and then set the value of the control in your ItemTemplate on the server side:

    void RGrdi1_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)

           {

                

               if (e.Item.ItemType == Telerik.Web.UI.GridItemType.AlternatingItem || e.Item.ItemType == Telerik.Web.UI.GridItemType.Item)

               {

                   var functionColumn = e.Item.FindControl("Funktion") as Literal;

                   var dataitem = e.Item.DataItem as DynamicContent;

                   var choiceValue = dataitem.GetValue<String[]>("TestChoice");

                   foreach (var item in choiceValue)

                   {

                       functionColumn.Text += item.ToString();

                   }

               }

           }

    Please find attached a short sample demonstrating the implemented functionality, I hope you find this information useful.

    "


    All the best,
    Boyan Barnev
    the Telerik team
    Do you want to have your say in the Sitefinity development roadmap? Do you want to know when a feature you requested is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
    Answered
2 posts, 1 answered