This is a migrated thread and some comments may be shown as answers.

GridDropdownColumn in CSV export

3 Answers 53 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Ana
Top achievements
Rank 1
Ana asked on 23 Jun 2016, 08:36 AM

Hi all!!!

I have a grid with several columns. When I try to export to csv, all the columns are exported correctly, except for the one that is defined as GripDropdwonColumn. Do you know where the problem can be?

I attach the code regarding grid definition and C# code for grid events:

<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" BackgroundPosition="Center">
</telerik:RadAjaxLoadingPanel>   
             
    <telerik:RadGrid ID="RadGrid1" runat="server"
    AllowMultiRowSelection="True" 
    ShowStatusBar="True"
    AllowFilteringByColumn="True" AllowSorting="True" EnableHeaderContextMenu="true"
    AllowPaging="True"
    GridLines="None" Width="99.8%"
    AutoGenerateColumns="False"
    CellPadding="0" CellSpacing="0" PagerStyle-AlwaysVisible="true"
    HeaderStyle-ForeColor="Black" HeaderStyle-Font-Bold="true"                
    OnUpdateCommand="RadGridUrl_UpdateCommand"
    OnItemDataBound="RadGrid1_ItemDataBound"
    OnItemCreated="RadGrid1_ItemCreated"
    OnItemCommand="RadGrid1_ItemCommand"
    >
        <GroupingSettings CaseSensitive="false"  />
        <MasterTableView
        TableLayout="Fixed" ClientDataKeyNames="VeM_InvoiceId" Font-Size="11px"
        CommandItemDisplay="Bottom" InsertItemPageIndexAction="ShowItemOnCurrentPage"
        >
           
        <CommandItemSettings ShowAddNewRecordButton="false" ShowRefreshButton="false" ShowExportToExcelButton="true" ShowExportToCsvButton="true" ></CommandItemSettings>
        <Columns>
                         
            <telerik:GridEditCommandColumn  HeaderStyle-Width="20px" ButtonType="ImageButton" UniqueName="GridButtonColumnEdit" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"/>
 
            <telerik:GridBoundColumn  HeaderText="Invoice" DataField="VeM_InvoiceId" UniqueName="VeM_InvoiceId"
            FilterControlWidth="45%" AutoPostBackOnFilter="true" ShowFilterIcon="true"  CurrentFilterFunction="Contains"
            HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="center" ReadOnly="True"
            HeaderStyle-Width="60px" Visible="false"
            />  
                       
            <telerik:GridBoundColumn  HeaderText="Invoice Number" DataField="InvoiceNumber" UniqueName="InvoiceNumber"
            FilterControlWidth="60%" AutoPostBackOnFilter="true" ShowFilterIcon="true"  CurrentFilterFunction="Contains"
            HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="center"
            HeaderStyle-Width="130px"
            />                  
 
            <telerik:GridBoundColumn  HeaderText="Invoicing VeOffice" DataField="TerritoryName" UniqueName="TerritoryName"
            FilterControlWidth="60%" AutoPostBackOnFilter="true" ShowFilterIcon="true"  CurrentFilterFunction="Contains"
            HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="center" ReadOnly="True"
            />                       
                          
            <telerik:GridBoundColumn  HeaderText="License" DataField="LicenseName" UniqueName="LicenseName"
            FilterControlWidth="60%" AutoPostBackOnFilter="true" ShowFilterIcon="true"  CurrentFilterFunction="Contains"
            HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="center" ReadOnly="True"
            />
                          
            <telerik:GridBoundColumn  HeaderText="Customer" DataField="CustomerName" UniqueName="CustomerName"
            FilterControlWidth="60%" AutoPostBackOnFilter="true" ShowFilterIcon="true"  CurrentFilterFunction="Contains"
            HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="center" ReadOnly="True"
            />
                          
            <telerik:GridBoundColumn  HeaderText="Country" DataField="Country" UniqueName="Country"
            FilterControlWidth="60%" AutoPostBackOnFilter="true" ShowFilterIcon="true"  CurrentFilterFunction="Contains"
            HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="center" ReadOnly="True"
            />
             
            <telerik:GridDropDownColumn UniqueName="InvoiceStatus" ListTextField="Name" ListValueField="VeM_InvoiceStatusId"
            DataField="VeM_InvoiceStatusId" HeaderText="Status" DropDownControlType="RadComboBox" 
            FilterControlWidth="60%" AutoPostBackOnFilter="true" ShowFilterIcon="true"  CurrentFilterFunction="Contains"
            HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="center"
            HeaderStyle-Width="75px" />
 
            <telerik:GridBoundColumn DataField="VeM_InvoiceStatusName" HeaderText="InvoiceStatusName" SortExpression="VeM_InvoiceStatusName"
            UniqueName="VeM_InvoiceStatusName" Display="false"/>
                          
            <telerik:GridBoundColumn  HeaderText="Invoiced Date" DataField="DateCreated" UniqueName="DateCreated"
            FilterControlWidth="60%" AutoPostBackOnFilter="true" ShowFilterIcon="true"  CurrentFilterFunction="Contains"
            HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="center" ReadOnly="True"
            />
 
            <telerik:GridDateTimeColumn HeaderText="Payment Date" DataField="DatePaid" UniqueName="DatePaid"
            FilterControlWidth="100%" AutoPostBackOnFilter="true" ShowFilterIcon="true"  CurrentFilterFunction="Contains"
            HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="center"
            PickerType="DatePicker"
            />
             
            <telerik:GridBoundColumn  HeaderText="" DataField="Symbol" UniqueName="Symbol"
            AllowFiltering="false"
            HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="center" ReadOnly="True"
            HeaderStyle-Width="20px"
            />
                         
            <telerik:GridBoundColumn  HeaderText="Invoice Total" DataField="InvoiceTotal" UniqueName="InvoiceTotal"
            FilterControlWidth="60%" AutoPostBackOnFilter="true" ShowFilterIcon="true"  CurrentFilterFunction="Contains"
            HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="center"
            DataFormatString="{0:#,0.00}"
            />
                          
            <telerik:GridBoundColumn  HeaderText="Number Sales" DataField="NumberSales" UniqueName="NumberSales"
            FilterControlWidth="60%" AutoPostBackOnFilter="true" ShowFilterIcon="true"  CurrentFilterFunction="Contains"
            HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="center"
            />
                          
            <telerik:GridBoundColumn  HeaderText="Total Sales" DataField="TotalSales" UniqueName="TotalSales"
            FilterControlWidth="60%" AutoPostBackOnFilter="true" ShowFilterIcon="true"  CurrentFilterFunction="Contains"
            HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="center"
            DataFormatString="{0:#,0.00}"
            />
                         
            <telerik:GridBoundColumn  HeaderText="Number Cancellations" DataField="NumberCancelations" UniqueName="NumberCancelations"
            FilterControlWidth="60%" AutoPostBackOnFilter="true" ShowFilterIcon="true"  CurrentFilterFunction="Contains"
            HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="center"
            />
                          
            <telerik:GridBoundColumn  HeaderText="Total Cancellations" DataField="TotalCancelations" UniqueName="TotalCancelations"
            FilterControlWidth="60%" AutoPostBackOnFilter="true" ShowFilterIcon="true"  CurrentFilterFunction="Contains"
            HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="center"
            DataFormatString="{0:#,0.00}"
            />
                          
            <telerik:GridBoundColumn  HeaderText="Updated Date" DataField="DateUpdated" UniqueName="DateUpdated"
            FilterControlWidth="60%" AutoPostBackOnFilter="true" ShowFilterIcon="true"  CurrentFilterFunction="Contains"
            HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="center" ReadOnly="True"
            />
                          
            <telerik:GridBoundColumn  HeaderText="Comments" DataField="Comments" UniqueName="Comments"
            FilterControlWidth="60%" AutoPostBackOnFilter="true" ShowFilterIcon="true"  CurrentFilterFunction="Contains"
            HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="center" Visible="false"
            />   
                          
        </Columns>
             
        </MasterTableView>
        <ClientSettings EnableRowHoverStyle="true" />
             
        <PagerStyle Mode="NextPrevNumericAndAdvanced" PagerTextFormat="{4} Records {2} to {3} of {5}" ></PagerStyle>
        <ExportSettings ExportOnlyData="false"></ExportSettings>
             
    </telerik:RadGrid>
            
 
<telerik:RadFormDecorator ID="FormDecoratorMaster" runat="server" DecoratedControls="all">
</telerik:RadFormDecorator>
<telerik:RadToolTipManager ID="RadToolTipManager1" runat="server"
        RelativeTo="Element" AutoTooltipify="true" ContentScrolling="Default" EnableAriaSupport="true"
        EnableShadow="true" Position="TopCenter"
        Animation="FlyIn"  >
         
</telerik:RadToolTipManager>

protected void RadGridUrl_UpdateCommand(object source, GridCommandEventArgs e)
{
    bool process = true;
    IControlPanelPersistenceProvider persistenceProvider = new ControlPanelDatabaseProvider();
    m_resultMessage.Visible = false;
 
    var editableItem = ((GridEditableItem)e.Item);
    VeM_Invoice invoice = new VeM_Invoice();
 
    invoice.VeM_InvoiceId = (int)editableItem.GetDataKeyValue("VeM_InvoiceId");
 
    //populate its properties
    Hashtable values = new Hashtable();
    editableItem.ExtractValues(values);
 
    int invoiceStatusId = 0;
    int.TryParse((editableItem["InvoiceStatus"].Controls[0] as RadComboBox).SelectedValue, out invoiceStatusId);
    invoice.VeM_InvoiceStatusId = invoiceStatusId;
 
    if (values["DatePaid"] != null)
    {
        invoice.DatePaid = DateTime.Parse((string)values["DatePaid"]);
    }
 
    if (values["InvoiceTotal"] != null)
    {
        try
        {
            invoice.InvoiceTotal = double.Parse((string)values["InvoiceTotal"]);
        }
        catch
        {
            process = false;
            m_resultMessage.Text = "Invoice Total is a numeric value";
            m_resultMessage.Visible = true;
        }
    }
    else
    {
        process = false;
        m_resultMessage.Text = "Invoice Total is required";
        m_resultMessage.Visible = true;
    }
 
    if (values["NumberSales"] != null)
    {
        try
        {
            invoice.NumberSales = int.Parse((string)values["NumberSales"]);
        }
        catch
        {
            process = false;
            m_resultMessage.Text = "Number Sales is a numeric value";
            m_resultMessage.Visible = true;
        }
    }
    else
    {
        process = false;
        m_resultMessage.Text = "Number Sales is required";
        m_resultMessage.Visible = true;
    }
 
    if (values["TotalSales"] != null)
    {
        try
        {
            invoice.TotalSales = double.Parse((string)values["TotalSales"]);
        }
        catch
        {
            process = false;
            m_resultMessage.Text = "Total Sales is a numeric value";
            m_resultMessage.Visible = true;
        }
    }
    else
    {
        process = false;
        m_resultMessage.Text = "Total Sales is required";
        m_resultMessage.Visible = true;
    }
 
    if (values["NumberCancelations"] != null)
    {
        try
        {
            invoice.NumberCancelations = int.Parse((string)values["NumberCancelations"]);
        }
        catch
        {
            process = false;
            m_resultMessage.Text = "Number Cancelations is a numeric value";
            m_resultMessage.Visible = true;
 
        }
    }
    else
    {
        process = false;
        m_resultMessage.Text = "Number Cancelations is required";
        m_resultMessage.Visible = true;
    }
 
    if (values["TotalCancelations"] != null)
    {
        try
        {
            invoice.TotalCancelations = double.Parse((string)values["TotalCancelations"]);
        }
        catch
        {
            process = false;
            m_resultMessage.Text = "Total Cancelations is a numeric value";
            m_resultMessage.Visible = true;
        }
    }
    else
    {
        process = false;
        m_resultMessage.Text = "Total Cancelations is required";
        m_resultMessage.Visible = true;
    }
 
    //Comments
    if (values["Comments"] != null)
    {
        invoice.Comments = (string)values["Comments"];
    }
 
    //InvoiceNumberEdited
    if (values["InvoiceNumber"] != null)
    {
        invoice.InvoiceNumberEdited = (string)values["InvoiceNumber"];
    }
    else
    {
        process = false;
        m_resultMessage.Text = "InvoiceNumber is required";
        m_resultMessage.Visible = true;
    }
 
    invoice.DateUpdated = DateTime.Now;
 
    if (process)
    {
        DataBaseEnum dataBaseEnum = persistenceProvider.SaveInvoice(invoice);
        switch (dataBaseEnum)
        {
            case DataBaseEnum.UpdateOK:
                m_resultMessage.Text = "Invoice Saved";
                m_resultMessage.Visible = true;
                PopulateGrid(true);
                break;
            case DataBaseEnum.UpdateError:
                m_resultMessage.Text = "Error saving the invoice";
                m_resultMessage.Visible = true;
                break;
        }
    }
}
         
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
    if (e.Item is GridDataItem && !e.Item.IsInEditMode)
    {
        GridDataItem item = (GridDataItem)e.Item;
        Literal invoiceStatus = (Literal)item["InvoiceStatus"].Controls[0];
        invoiceStatus.Text = (string)DataBinder.Eval(item.DataItem, "VeM_InvoiceStatusName");
    }
 
    if (e.Item is GridEditableItem && e.Item.IsInEditMode)
    {
        //first reference the edited grid item
        GridEditableItem editedItem = e.Item as GridEditableItem;
        GridEditManager editMan = editedItem.EditManager;
 
        GridTextBoxColumnEditor nameDisplayField = editMan.GetColumnEditor("Comments") as GridTextBoxColumnEditor;
        nameDisplayField.TextBoxControl.TextMode = TextBoxMode.MultiLine;
 
        IControlPanelPersistenceProvider persistenceProvider = new ControlPanelDatabaseProvider();
        List<VeM_InvoiceStatus> invoiceStatusCollection = persistenceProvider.ListInvoiceStatus();
 
        GridDropDownColumnEditor invoiceStatusDropdown = editMan.GetColumnEditor("InvoiceStatus") as GridDropDownColumnEditor;
        invoiceStatusDropdown.DataSource = invoiceStatusCollection;
        invoiceStatusDropdown.DataBind();
        invoiceStatusDropdown.SelectedValue = ((Ve.Apps.ConfigurationUI.BusinessObjects.Invoice)editedItem.DataItem).VeM_InvoiceStatusId.ToString();
    }
 
    if (e.Item is GridFilteringItem)
    {
        GridFilteringItem item = e.Item as GridFilteringItem;
        ((item["InvoiceStatus"].Controls[0]) as TextBox).Text = ((item["VeM_InvoiceStatusName"].Controls[0]) as TextBox).Text;
    }
}
 
protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e)
{
    Country country = (Country)Session["cultureInfo"];
    string locale = country.Language;
 
    if (locale != "en")
    {
        TranslationHandler myHandler = new TranslationHandler(locale, Server.MapPath(""));
        if (e.Item is GridPagerItem)
        {
            Button GoToPageLinkButton = (Button)e.Item.FindControl("GoToPageLinkButton");
            GoToPageLinkButton.Text = myHandler.GetString("VeM_Grid_Go");
 
            Button ChangePageSizeLinkButton = (Button)e.Item.FindControl("ChangePageSizeLinkButton");
            ChangePageSizeLinkButton.Text = myHandler.GetString("VeM_Grid_Change");
 
            Label changePageLabel = (Label)e.Item.FindControl("GoToPageLabel");
            changePageLabel.Text = myHandler.GetString("VeM_Grid_Page");
 
            Label lblPageSize = (Label)e.Item.FindControl("ChangePageSizeLabel");
            lblPageSize.Text = myHandler.GetString("VeM_Grid_PageSize");
 
            Label lblPageOf = (Label)e.Item.FindControl("PageOfLabel");
            lblPageOf.Text = myHandler.GetString("VeM_Grid_Of");
 
            RadGrid1.PagerStyle.PagerTextFormat = "{4} " + myHandler.GetString("VeM_Grid_Records") + " {2} " + myHandler.GetString("VeM_Grid_To") + " {3} " + myHandler.GetString("VeM_Grid_Of") + " {5}";
        }
    }
}
 
protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)
{
    if (e.CommandName == RadGrid.FilterCommandName)
    {
        Pair command = (Pair)e.CommandArgument;
        if (command.Second.ToString() == "InvoiceStatus")
        {
            e.Canceled = true;
            GridFilteringItem filter = (GridFilteringItem)e.Item;
            ((filter["VeM_InvoiceStatusName"].Controls[0]) as TextBox).Text = ((filter["InvoiceStatus"].Controls[0]) as TextBox).Text;
            command.Second = "VeM_InvoiceStatusName";
            filter.FireCommandEvent("Filter", new Pair(command.First, "VeM_InvoiceStatusName"));
        }
    }
}

 

3 Answers, 1 is accepted

Sort by
0
Ana
Top achievements
Rank 1
answered on 23 Jun 2016, 08:42 AM

I must say that the problem with this columns is that the field appears blank "" for all the rows.

 

Thanks in advance

0
Ana
Top achievements
Rank 1
answered on 23 Jun 2016, 09:52 AM

More info...

 

I am testing the application and have found one issue. If I put in edit mode, for example, the second row and export to csv, the rows from the third one have the status column with the correct value in the exported file.

0
Viktor Tachev
Telerik team
answered on 27 Jun 2016, 02:14 PM
Hi Ana,

Try to use the approach suggested in the following thread and see how it works for your scenario.



Regards,
Viktor Tachev
Telerik
Do you need help with upgrading your ASP.NET AJAX, WPF or WinForms projects? Check the Telerik API Analyzer and share your thoughts.
Tags
Grid
Asked by
Ana
Top achievements
Rank 1
Answers by
Ana
Top achievements
Rank 1
Viktor Tachev
Telerik team
Share this question
or