问题描述
我无法使用自定义数据源将 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;
}
}
}
解决方法
在我的页面添加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 });
}
我的问题解决了。希望它有益于您的业务