ASP.NET devexpress GridDataTextColumn 导出excel空值

问题描述

我无法使用自定义数据源将 aspxgridview 对象中的内容传输到 excel。只有页眉和页脚即将到来。 我已经分享了我的所有代码,以便您完全了解情节。 无关紧要,当使用下拉列表选择该项目时,我的数据将被重塑。

default.aspx 页面

 <dx:aspxgridview runat="server" ID="dev" AutoGenerateColumns="False" 
                                     OnCustomColumnDisplayText="dev_OnCustomColumnDisplayText" ClientInstanceName="grid" Theme="iOS">
                        <Toolbars>
                            <dx:GridViewToolbar>
                                <SettingsAdaptivity Enabled="true" EnableCollapseRootItemsToIcons="true" />
                                <Items>
                                    <dx:GridViewToolbarItem Command="ExportToPdf" />
                                    <dx:GridViewToolbarItem Command="ExportToXls" />
                                    <dx:GridViewToolbarItem Command="ExportToXlsx" />
                                    <dx:GridViewToolbarItem Command="ExportToDocx" />
                                    <dx:GridViewToolbarItem Command="ExportToRtf" />
                                    <dx:GridViewToolbarItem Command="ExportToCsv" />
                                </Items>
                            </dx:GridViewToolbar>
                        </Toolbars>
                        <Settings ShowFooter="True" />
                        <Columns>
                            <dx:GridViewDataTextColumn FieldName="groupname" Caption="Ürün Adı">
                                <Settings AllowSort="False" />
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn FieldName="toplam_adet" Caption="Bekleme" >
                                <PropertiesTextEdit DisplayFormatString="{0:#,#}"></PropertiesTextEdit>
                                <Settings AllowSort="False" />
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn FieldName="toplam_kg" Caption="KG" >
                                <PropertiesTextEdit DisplayFormatString="0{0:#,#.00}"></PropertiesTextEdit>
                                <Settings AllowSort="False" />
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn FieldName="toplam_per" Caption="%" >
                                <PropertiesTextEdit DisplayFormatString="{0:#,#}"></PropertiesTextEdit>
                                <Settings AllowSort="False" />
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn FieldName="teslim_adet" Caption="Yıkama" >
                                <PropertiesTextEdit DisplayFormatString="{0:#,#}"></PropertiesTextEdit>
                                <Settings AllowSort="False" />
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn FieldName="teslim_kg" Caption="KG" >
                                <PropertiesTextEdit DisplayFormatString="0{0:#,#.00}"></PropertiesTextEdit>
                                <Settings AllowSort="False" />
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn FieldName="teslim_per" Caption="%" >
                                <PropertiesTextEdit DisplayFormatString="{0:#,#}"></PropertiesTextEdit>
                                <Settings AllowSort="False" />
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn FieldName="sepet_adet" Caption="Paketleme" >
                                <PropertiesTextEdit DisplayFormatString="{0:#,#}"></PropertiesTextEdit>
                                <Settings AllowSort="False" />
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn FieldName="sepet_kg" Caption="KG" >
                                <PropertiesTextEdit DisplayFormatString="0{0:#,#.00}"></PropertiesTextEdit>
                                <Settings AllowSort="False" />
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn FieldName="sepet_per" Caption="%" >
                                <PropertiesTextEdit DisplayFormatString="{0:#,#}"></PropertiesTextEdit>
                                <Settings AllowSort="False" />
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn FieldName="yikama_adet" Caption="Yıkama" >
                                <PropertiesTextEdit DisplayFormatString="{0:#,#}"></PropertiesTextEdit>
                                <Settings AllowSort="False" />
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn FieldName="yikama_kg" Caption="KG" >
                                <PropertiesTextEdit DisplayFormatString="0{0:#,#.00}"></PropertiesTextEdit>
                                <Settings AllowSort="False" />
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn FieldName="yikama_per" Caption="%" >
                                <PropertiesTextEdit DisplayFormatString="{0:#,#}"></PropertiesTextEdit>
                                <Settings AllowSort="False" />
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn FieldName="paketleme_adet" Caption="Toplam" >
                                <PropertiesTextEdit DisplayFormatString="{0:#,#}"></PropertiesTextEdit>
                                <Settings AllowSort="False" />
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn FieldName="paketleme_kg" Caption="KG" >
                                <PropertiesTextEdit DisplayFormatString="0{0:#,#.00}"></PropertiesTextEdit>
                                <Settings AllowSort="False" />
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn FieldName="paketleme_per" Caption="%" >
                                <PropertiesTextEdit DisplayFormatString="{0:#,#}"></PropertiesTextEdit>
                                <Settings AllowSort="False" />
                            </dx:GridViewDataTextColumn>
                        </Columns>

                        <TotalSummary>
                            <dx:ASPxSummaryItem FieldName="groupname" SummaryType="Count" DisplayFormat="Toplam {0} adet" />
                            <dx:ASPxSummaryItem FieldName="toplam_adet"  SummaryType="Sum" DisplayFormat="{0:#,#}"/>
                            <dx:ASPxSummaryItem FieldName="toplam_kg"    SummaryType="Sum" DisplayFormat="0{0:#,#.00}"/>
                            <dx:ASPxSummaryItem FieldName="toplam_per"   SummaryType="Sum" DisplayFormat="{0:#,#}"/>
                            <dx:ASPxSummaryItem FieldName="teslim_adet" SummaryType="Sum" DisplayFormat="{0:#,#}"/>
                            <dx:ASPxSummaryItem FieldName="teslim_kg"  SummaryType="Sum" DisplayFormat="0{0:#,#.00}"/>
                            <dx:ASPxSummaryItem FieldName="teslim_per"  SummaryType="Sum" DisplayFormat="{0:#,#}"/>
                            <dx:ASPxSummaryItem FieldName="sepet_adet"  SummaryType="Sum" DisplayFormat="{0:#,#}"/>
                            <dx:ASPxSummaryItem FieldName="sepet_kg"   SummaryType="Sum" DisplayFormat="0{0:#,#.00}"/>
                            <dx:ASPxSummaryItem FieldName="sepet_per" SummaryType="Sum" DisplayFormat="{0:#,#}"/>
                            <dx:ASPxSummaryItem FieldName="yikama_adet" SummaryType="Sum" DisplayFormat="{0:#,#}"/>
                            <dx:ASPxSummaryItem FieldName="yikama_kg" SummaryType="Sum" DisplayFormat="0{0:#,#.00}"/>
                            <dx:ASPxSummaryItem FieldName="yikama_per" SummaryType="Sum" DisplayFormat="{0:#,#}"/>
                            <dx:ASPxSummaryItem FieldName="paketleme_adet" SummaryType="Sum" DisplayFormat="{0:#,#}"/>
                            <dx:ASPxSummaryItem FieldName="paketleme_kg" SummaryType="Sum" DisplayFormat="0{0:#,#.00}"/>
                            <dx:ASPxSummaryItem FieldName="paketleme_per" SummaryType="Sum" DisplayFormat="{0:#,#}"/>
                        </TotalSummary>
                        
                        <Settings ShowGroupPanel="True" ShowFooter="True" ShowGroupFooter="VisibleAlways" />
                        <SettingsExport EnableClientSideExportAPI="true" ExcelExportMode="DataAware" />
                        <SettingsPager PageSize="15" />
                    </dx:aspxgridview>

default.aspx.cs 页面

public partial class Default : System.Web.UI.Page
    {
        public SqlConnection SqlConnection;
        

        protected void Page_Load(object sender,EventArgs e)
        {
            GridViewFeaturesHelper.SetupGlobalGridViewBehavior(dev);

            if (Session["CustomLoginResponse"] is CustomLoginResponse customLoginResponse)
            {
                if (!Global.IsAuth(customLoginResponse.auth_report,Global.AuthTypes.authInstantPlant))
                {
                    //Global.ShowError(this,"Uyarı ..","Bu sayfaya erişim yetkiniz yoktur..",Global.ToastrType.error);
                    Response.Redirect("~/AuthErrorPage.aspx",true);
                    return;
                }
            }

            SqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnectionstring"].ConnectionString);
            
            // sayfa yeni yüklemelerinde bunu kullanma
            if (!IsPostBack && !IsCallback)
            {
                DropdownlistData();
                dev.ExpandAll();
            }
        }

        private void DropdownlistData()
        {
            drp_client.Items.Insert(0,new ListItem("Tüm Cariler","0"));

            SqlCommand cmd = new SqlCommand("SELECT id,definition FROM client ORDER BY id ASC",SqlConnection);
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            sda.Fill(ds);

            drp_client.DataSource = ds.Tables[0];
            drp_client.DataTextField = "definition";
            drp_client.DataValueField = "id";
            drp_client.DataBind();


            drp_client.DataSource = ds;
            drp_client.DataBind();

            drp_client.Items.Insert(0,"0"));

            Datalist();
        }

     
        // gruplara göre sıralama dropdownlist click
        protected void drp_group_OnSelectedIndexChanged(object sender,EventArgs e)
        {
            Datalist();
        }

        protected void drp_client_OnSelectedIndexChanged(object sender,EventArgs e)
        {
            Datalist();
        }

        private void Datalist()
        {

            int _group = Convert.ToInt32(drp_group.SelectedValue);
            int _ref_client = Convert.ToInt32(drp_client.SelectedValue);
            
            // where komutları için
            String sGroupSql = "";
            String sClientSql = "";

            // eğer group boş değilse
            switch (_group)
            {
                case 1:
                    sGroupSql = $"s.code,s.definition";
                    
                    break;
                case 2:
                    sGroupSql = $"g.code,g.definition";
                    break;
                default:
                    sGroupSql = $"c.code,c.definition";
                    break;
            }

            if (_ref_client != 0)
            {
                sClientSql = $" AND (s.ref_client = {_ref_client}) ";
            }

            try
            {
                var query = $@"DECLARE @ksepet DECIMAL(19,4),@kyikama DECIMAL(19,@kpaketleme DECIMAL(19,@kteslim DECIMAL(19,@ktoplam DECIMAL(19,4)
                                        SELECT
                                          @ktoplam = CONVERT(DECIMAL,SUM(CASE WHEN i.status IN (1,2,3,4) THEN s.weight ELSE 0 END)) / 1000,@kteslim = CONVERT(DECIMAL,SUM(CASE WHEN i.status = 4 THEN s.weight ELSE 0 END)) / 1000,@ksepet = CONVERT(DECIMAL,SUM(CASE WHEN i.status = 1 THEN s.weight ELSE 0 END)) / 1000,@kyikama = CONVERT(DECIMAL,SUM(CASE WHEN i.status = 2 THEN s.weight ELSE 0 END)) / 1000,@kpaketleme = CONVERT(DECIMAL,SUM(CASE WHEN i.status = 3 THEN s.weight ELSE 0 END)) / 1000
                                        FROM
                                          clstock s
                                          INNER JOIN clitem i ON (i.ref_clstock = s.id)
                                        WHERE i.state = 0 {sClientSql}
                                        SELECT
                                          t.groupname,t.toplam_adet,t.toplam_kg,CASE WHEN @ktoplam > 0 THEN t.toplam_kg / @ktoplam END * 100 toplam_per,t.teslim_adet,t.teslim_kg,CASE WHEN @kteslim > 0 THEN t.teslim_kg / @kteslim END * 100 teslim_per,t.sepet_adet,t.sepet_kg,CASE WHEN @ksepet > 0 THEN t.sepet_kg / @ksepet END * 100 sepet_per,t.yikama_adet,t.yikama_kg,CASE WHEN @kyikama > 0 THEN t.yikama_kg / @kyikama END * 100 yikama_per,t.paketleme_adet,t.paketleme_kg,CASE WHEN @kpaketleme > 0 THEN t.paketleme_kg / @kpaketleme END * 100 paketleme_per
                                        FROM (
                                          SELECT
                                            {sGroupSql} groupname,SUM(CASE WHEN i.status = 1 THEN 1 ELSE 0 END) sepet_adet,CONVERT(DECIMAL,SUM(CASE WHEN i.status = 1 THEN s.weight ELSE 0 END)) / 1000 sepet_kg,SUM(CASE WHEN i.status = 2 THEN 1 ELSE 0 END) yikama_adet,SUM(CASE WHEN i.status = 2 THEN s.weight ELSE 0 END)) / 1000 yikama_kg,SUM(CASE WHEN i.status = 3 THEN 1 ELSE 0 END) paketleme_adet,SUM(CASE WHEN i.status = 3 THEN s.weight ELSE 0 END)) / 1000 paketleme_kg,SUM(CASE WHEN i.status = 4 THEN 1 ELSE 0 END) teslim_adet,SUM(CASE WHEN i.status = 4 THEN s.weight ELSE 0 END)) / 1000 teslim_kg,4) THEN 1 ELSE 0 END) toplam_adet,4) THEN s.weight ELSE 0 END)) / 1000 toplam_kg
                                          FROM
                                            stockgroup g
                                            INNER JOIN clstock s ON (s.ref_stockgroup = g.id)
                                            INNER JOIN clitem i ON (i.ref_clstock = s.id)
                                            INNER JOIN client c ON (c.id = i.ref_client)
                                          WHERE i.state = 0 {sClientSql}
                                          GROUP BY  {sGroupSql}
                                        ) t";
                var cmdData = new SqlCommand(query,SqlConnection);
                SqlConnection.Open();

                SqlDataReader dr = cmdData.ExecuteReader();

                var dataTable = new DataTable();
                dataTable.Load(dr);

                dev.DataSource = dataTable;
                dev.DataBind();
            }
            catch (Exception ex)
            {
                //message
            }
        }

        protected void listview_data_OnItemDataBound(object sender,ListViewItemEventArgs e)
        {
            
            if (e.Item.ItemType == ListViewItemType.DataItem)
            {
                // Display the e-mail address in italics.
                Label lblTitle = (Label) listview_data.FindControl("lblTitle");

                // Here,lblProdID contains your data ProductID as text,change to "My Text"
                int _group = Convert.ToInt32(drp_group.SelectedValue);

                switch (_group)
                {
                    case 1:
                        lblTitle.Text = "Ürün";
                        break;
                    case 2:
                        lblTitle.Text = "Ürün grubu";
                        break;
                    default:
                        lblTitle.Text = "Müşteri";
                        break;
                }
            } 
        }

        // eğer format true ise yüzde ve kg için formatla.
        public string NullValue(object myValue)
        {
            // eğer null ise boş text
            if (myValue == null) return "";

            // eğer küme boş ise boş text
            if (myValue.Equals(DBNull.Value)) return "";

            // geleni stringe dönüştür
            var data = myValue.ToString();


            //sayı ise 0 == boş değil ise gelen
            if (Convert.ToDecimal(data) == 0)
            {
                {
                    return "";
                }
            }
            else
            {
                return Global.FormatMoney(Convert.ToDecimal(data));
                //return data;
            }
        }


        protected void dev_OnCustomColumnDisplayText(object sender,ASPxGridViewColumnDisplayTextEventArgs e)
        {
            switch (e.Column.FieldName)
            {
                case "toplam_kg" when (decimal)e.Value == 0:
                case "teslim_kg" when (decimal)e.Value == 0:
                case "sepet_kg" when (decimal)e.Value == 0:
                case "yikama_kg" when (decimal)e.Value == 0:
                case "paketleme_kg" when (decimal)e.Value == 0:
                    e.DisplayText = string.Empty;
                    break;
            }
        }
    }

enter image description here

enter image description here

解决方法

在我的页面添加gridviewexporter和button后,button点击事件; 默认.aspx

 <asp:Button runat="server" ID="aktar" OnClick="aktar_OnClick" Text="aktar"/>

                <dx:ASPxGridViewExporter ID="ASPxGridViewExporter1" runat="server" GridViewID="dev" >
                </dx:ASPxGridViewExporter>

default.aspx.cs 页面

protected void aktar_OnClick(object sender,EventArgs e)
    {
        Datalist();
        ASPxGridViewExporter1.WriteXlsxToResponse(new XlsxExportOptionsEx { ExportType = ExportType.WYSIWYG });
    }

我的问题解决了。希望它有益于您的业务

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...