Bind GridDropDownColumn to a web service

8 posts, 0 answers
  1. Roberto
    Roberto avatar
    8 posts
    Member since:
    Apr 2009

    Posted 09 Aug 2009 Link to this post

    I have populated my grid with a service and everything works fine, now i want to populate a GridDropDownColumn with a WebService i think the GridDropDownColumn is a RadComboBox and i found a sample using the webservicesettings tag but i dont how to implement it for GridDropDownColumn.

    I hope you can help me
  2. Veli
    Admin
    Veli avatar
    2002 posts

    Posted 11 Aug 2009 Link to this post

    Hi Roberto,

    The RadComboBox object should be accessible in RadGrid's ItemCreated event. If we are talking about RadComboBox in the edit form of the GridDropDownColumn, here is how you can access it:

    void RadGrid1_ItemCreated(object sender, GridItemEventArgs e) 
        if (e.Item is GridEditableItem && e.Item.IsInEditMode) 
        { 
            GridEditableItem item = e.Item as GridEditableItem; 
            RadComboBox combo = (item.EditManager.GetColumnEditor("DropDownColumnNAme"as GridDropDownListColumnEditor).ComboBoxControl; 
            //you can now set combo.WebServiceSettings.Path 
        } 

    Your combo now holds a reference to the actual RadComboBox control and you can set its properties programmatically.

    Sincerely yours,
    Veli
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Check out the tips for optimizing your support resource searches.
  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. Roberto
    Roberto avatar
    8 posts
    Member since:
    Apr 2009

    Posted 11 Aug 2009 Link to this post

    Thanks Veli,

    probably you could help with this, i need a grid displaying my records with a column which links with a "catalog" for example this column called "Tipo" brings a "0" and i want to display the description of that zero for example "Beverages" an if it's bring a "1" i want to display "Food", so i think a DropdownColumn does this but it doesn't work

    this is my grid:

     

     

    <telerik:RadGrid ID="RadGrid1" runat="server" Skin="Black" AllowPaging="true" PageSize="10">  
                        <MasterTableView ClientDataKeyNames="Identificador">  
                            <PagerStyle Mode="NextPrev" /> 
                            <Columns> 
                                <telerik:GridBoundColumn DataField="Identificador" HeaderText="Identificador" Display="false" /> 
                                <telerik:GridBoundColumn DataField="Proyecto" HeaderText="Proyecto" Display="false" /> 
                                <telerik:GridBoundColumn DataField="Nombre" HeaderText="Estación" /> 
                                 <telerik:GridDropDownColumn DataField="Tipo" HeaderText="Tipo de Estación" DataSourceID="odsTipoEstacion" 
                                    ListTextField="Name" ListValueField="Value" /> 
                                <telerik:GridCheckBoxColumn DataField="Fisicos" HeaderText="Fisicos" /> 
                                <telerik:GridCheckBoxColumn DataField="Biologicos" HeaderText="Biologicos" /> 
                                <telerik:GridCheckBoxColumn DataField="Hidrologicos" HeaderText="Hidrologicos" /> 
                            </Columns> 
                        </MasterTableView> 
                        <ClientSettings> 
                            <DataBinding Location="WsDatosAO.svc" FilterParameterType="Linq" SelectMethod="GetEstacionesDataAndCount" 
                                SortParameterType="Linq">  
                            </DataBinding> 
                            <ClientEvents OnRowSelected="RadGrid1_RowSelected" OnDataBound="RadGrid1_DataBound" /> 
                            <Selecting AllowRowSelect="true" /> 
                        </ClientSettings> 
                    </telerik:RadGrid> 
                    <asp:ObjectDataSource ID="odsTipoEstacion" runat="server" SelectMethod="GetDomain" 
                        TypeName="Muestreos.WsDatosAO">  
                        <SelectParameters> 
                            <asp:Parameter DefaultValue="Muestreo" Name="DomainName" Type="String" /> 
                        </SelectParameters> 
                    </asp:ObjectDataSource> 

     

  5. Veli
    Admin
    Veli avatar
    2002 posts

    Posted 12 Aug 2009 Link to this post

    Hi Roberto,

    This is exactly the correct approach to take. Probably, your GridDropDownColumn is not properly configured. Here is an article you can refer to:

    Customize/Configure GridDropDownColumn

    Sincerely yours,
    Veli
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Check out the tips for optimizing your support resource searches.
  6. Roberto
    Roberto avatar
    8 posts
    Member since:
    Apr 2009

    Posted 12 Aug 2009 Link to this post

    If i set my grid datasource from the datasourceid tag

     <telerik:RadGrid ID="RadGrid2" runat="server" Skin="Black" AllowPaging="True"   
                DataSourceID="ObjectDataSource1" GridLines="None">  
                        <MasterTableView ClientDataKeyNames="Identificador">  
                            <PagerStyle Mode="NextPrev" /> 
                            <Columns> 
                                <telerik:GridBoundColumn DataField="Identificador" HeaderText="Identificador"   
                                    Display="False" UniqueName="Identificador" /> 
                                <telerik:GridBoundColumn DataField="Proyecto" HeaderText="Proyecto" Display="false" /> 
                                <telerik:GridBoundColumn DataField="Nombre" HeaderText="Estación" /> 
                                 <telerik:GridDropDownColumn DataField="Tipo" HeaderText="Tipo de Estación" DataSourceID="odsTipoEstacion" 
                                    ListTextField="Name" ListValueField="Value" DataType="System.String" DropDownControlType="RadComboBox" 
                                     ForceExtractValue="Always" /> 
                                <telerik:GridCheckBoxColumn DataField="Fisicos" HeaderText="Fisicos" /> 
                                <telerik:GridCheckBoxColumn DataField="Biologicos" HeaderText="Biologicos" /> 
                                <telerik:GridCheckBoxColumn DataField="Hidrologicos" HeaderText="Hidrologicos" /> 
                            </Columns> 
                        </MasterTableView> 
                        <ClientSettings> 
                            <ClientEvents OnRowSelected="RadGrid1_RowSelected" OnDataBound="RadGrid1_DataBound" /> 
                            <Selecting AllowRowSelect="true" /> 
                        </ClientSettings> 
                    </telerik:RadGrid> 

    and not from Client DataBinding

    <telerik:RadGrid ID="RadGrid1" runat="server" Skin="Black" AllowPaging="true" PageSize="10">  
                        <MasterTableView ClientDataKeyNames="Identificador">  
                            <PagerStyle Mode="NextPrev" /> 
                            <Columns> 
                                <telerik:GridBoundColumn DataField="Identificador" HeaderText="Identificador" Display="false" /> 
                                <telerik:GridBoundColumn DataField="Proyecto" HeaderText="Proyecto" Display="false" /> 
                                <telerik:GridBoundColumn DataField="Nombre" HeaderText="Estación" /> 
                                 <telerik:GridDropDownColumn DataField="Tipo" HeaderText="Tipo de Estación" DataSourceID="odsTipoEstacion" 
                                    ListTextField="Name" ListValueField="Value" DataType="System.String" DropDownControlType="RadComboBox" 
                                     ForceExtractValue="Always" /> 
                                <telerik:GridCheckBoxColumn DataField="Fisicos" HeaderText="Fisicos" /> 
                                <telerik:GridCheckBoxColumn DataField="Biologicos" HeaderText="Biologicos" /> 
                                <telerik:GridCheckBoxColumn DataField="Hidrologicos" HeaderText="Hidrologicos" /> 
                            </Columns> 
                        </MasterTableView> 
                        <ClientSettings> 
                            <DataBinding Location="WsDatosAO.svc" FilterParameterType="Linq" SelectMethod="GetEstacionesDataAndCount" 
                                SortParameterType="Linq">  
                            </DataBinding> 
                            <ClientEvents OnRowSelected="RadGrid1_RowSelected" OnDataBound="RadGrid1_DataBound" /> 
                            <Selecting AllowRowSelect="true" /> 
                        </ClientSettings> 
                    </telerik:RadGrid> 

    Everything works fine but i need to pass parameters to the grid datasource from the client side api and im not sure if setting the datasource in this way it could be possible.

    Any way, i think there is a bug when the source of the grid is set by the databinding tag.
  7. Veli
    Admin
    Veli avatar
    2002 posts

    Posted 13 Aug 2009 Link to this post

    Hello Roberto,

    RadGrid's GridDropDownColumn does not support client-side binding to web services. If you bind RadGrid on the client, you need to implement your custom mechanism for populating a GridDropDownColumn or a similarly-functioning template column.

    You can find a small web site I have created for your reference. Inside, I have a RadGrid with client-side data binding to page methods. Additionally, I use client-side logic to manually fetch data for my GridDropDownColumn and set the values in the cells.

    Best wishes,
    Veli
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Check out the tips for optimizing your support resource searches.
  8. Veli
    Admin
    Veli avatar
    2002 posts

    Posted 13 Aug 2009 Link to this post

    Hi Roberto,

    Please, excuse me, here is the actual attachment.

    Regards,
    Veli
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Check out the tips for optimizing your support resource searches.
  9. Sunil
    Sunil avatar
    230 posts
    Member since:
    Jan 2004

    Posted 13 Sep 2012 Link to this post

    Hi Roberto,

    You can also use a simple approach, which I used when using a web service to get the data for a Grid Dropdown column.
    Use an ObjectDataSource in your page, and set the DataSourceID for Grid Dropdown column to the id of this ObjectDataSource.
    Then, make sure that you specify a select method for object data source and call your web service method from inside the select method. I have provided some sample code below that I used. Follow the 3 steps below and you are all set to go.

    • Define ObjectDataSource in your page.  The'typename' for object datasource is simply the type of your page with the full namespace, which you can get from the 'Inherits' attribute from your 'Page' tag at the top of your page's html.
    <%@ Page Title="" Language="C#" MasterPageFile="~/Generic.Master" AutoEventWireup="true" CodeBehind="BaseTierAlertSettings.aspx.cs" Inherits="ABC.Web.WebClient.BaseTierAlertSettings" %>
    <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
     
    <asp:ObjectDataSource ID="CommandTypes" runat="server"
         SelectMethod="GetCommandTypes" TypeName="ABC.Web.WebClient.BaseTierAlertSettings"></asp:ObjectDataSource>

    • Define the select method in  your code behind, from which you call your web service and return a generic collection of custom objects. Make sure that you define the custom objects in your page's code behind. In my case, I defined the custom object 'BaseTierManagerCommandTypeLocal' within the page's code-behind.
    public List<BaseTierManagerCommandTypeLocal> GetCommandTypes()
     {
         List<BaseTierManagerCommandTypeLocal> cts = new List<BaseTierManagerCommandTypeLocal>();
     
         ServiceClient dsc = new ServiceClient();
     
         try
         {
     
             CommandTypes = dsc.GetBaseTierManagerCommandTypes();
             BaseTierManagerCommandTypeLocal ct = null;
              
             foreach (BaseTierManagerCommandType commandType in CommandTypes)
             {
                 ct = new BaseTierManagerCommandTypeLocal();
                 ct.CommandTypeID = commandType.CommandTypeID;
                 ct.CommandTypeName = commandType.CommandTypeName;
                 ct.CommandTypeDescription = commandType.CommandTypeDescription;
                 cts.Add(ct);
             }
     
         }
         catch (Exception ex)
         {
             if (dsc.State == System.ServiceModel.CommunicationState.Faulted)
             {
                 dsc.Abort();
             }
     
             throw ex;
         }
         finally
         {
             dsc.Close();
         }
         return cts;

    • The    'BaseTierManagerCommandTypeLocal' is also defined in the page code-behind. The web service in my case was returning ''BaseTierManagerCommandType' and so you need to convert the web service object to your local object in your select method for objectdatasource . Make sure you define an empty parameterless constructor for this local object type.

    public class BaseTierManagerCommandTypeLocal
      {
          
          public int CommandTypeID { get; set; }
           
          public string CommandTypeName { get; set; }
           
          public string CommandTypeDescription { get; set; }
          
          public string Tag { get; set; }
          //Store any custom data you would like in the Tag property, which you cannot fulfill by using existing data types.
     
          public BaseTierManagerCommandTypeLocal()
          {
          }
     
      }

Back to Top
UI for ASP.NET Ajax is Ready for VS 2017