Witam, pisze programik, ktory eksportuje mi dane z bazy(raporty) do CSV. Problem dotyczy kontrolki GridView.
W zaleznosci od wyboru rodzaju raportu(dropDownList) kontrolka GridView przyjmuje inne dane, potem klikajac w przycisk eksportuj wyrzuca mi to do pliku csv, ale...
dziala to tylko wtedy gdy na sztywno do GridView jest przypisane DataSource z jakiejs tam kontroli SQLDataSource. Jesli zmieniam dynamicznie selecta w SQLDataSOurce to niby kontrolka GridView sie zmienia ale CSV si enie tworzy. Analizujac problem nie wiem czemu ale w tym wypadku pobierajac np rows.count pokazuje zero tak samo jak i do kolumn...a przeciez gridview jest wypelniona o to widze...zamieszczam kod prosze o pomoc
[code]
protected void Page_Load(object sender, EventArgs e)
{
String sql = "";
SqlDataSource2.ConnectionString = ConfigurationManager.ConnectionStrings["dsc"].ConnectionString.ToString();
test.Text = this.tabelaRaport.Columns.Count.ToString();
// SqlDataSource1.SelectCommand = sql;
if (listaRaport.SelectedValue.ToString().CompareTo("all") == 0)
{
sql="SELECT * FROM [DSC_Order]";
SqlDataSource2.SelectCommand = sql;
}
if (listaRaport.SelectedValue.ToString().CompareTo("ilosc") == 0)
{
sql = "SELECT productName as Nazwa,price as Cena,orderedCount as Ilosc FROM [DSC_Product] where orderedCount > 0";
SqlDataSource2.SelectCommand = sql;
}
tabelaRaport.DataSourceID = "SqlDataSource2";
}
protected void csvButton_Click(object sender, EventArgs e)
{
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition",
"attachment;filename=GridViewExport.csv");
Response.Charset = "";
Response.ContentType = "application/text";
tabelaRaport.AllowPaging = false;
tabelaRaport.DataBind();
StringBuilder sb = new StringBuilder();
for (int k = 0; k < tabelaRaport.Columns.Count; k++)
{
sb.Append(tabelaRaport.Columns[k].HeaderText + ',');
}
sb.Append("\r\n");
for (int i = 0; i < tabelaRaport.Rows.Count; i++)
{
for (int k = 0; k < tabelaRaport.Columns.Count; k++)
{
sb.Append(tabelaRaport.Rows[i].Cells[k].Text + ',');
}
sb.Append("\r\n");
}
Response.Output.Write(sb.ToString());
Response.Flush();
Response.End();
}
[\code]