我用条件得到GV,条件有选择的时间。我选择某个时间,得到该时间下对应的列表数据,但是每次导出EXCEL后,EXCEL中关于时间的数据总是1990年,也就是我时间的下拉列表的第一个时间,但是我选择的是2008年啊,GV里面生成的数据也是2008,导出到EXCEL后,2008就变成了1990了,怎么搞的啊。我用的方法是
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls");
Response.ContentType = "application/excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gv_searchlist.RenderControl(htw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();另外,显示时间的地方是GV的表头,我在表头里面做了处理,也就是合并了表头的,代码如下:
protected void gv_searchlist_RowCreated(object sender, GridViewRowEventArgs e)
{
    switch (e.Row.RowType)
    {
        case DataControlRowType.Header:
            //第一行表头
            TableCellCollection tcHeader = e.Row.Cells;
            tcHeader.Clear();            tcHeader.Add(new TableHeaderCell());
            tcHeader[0].Attributes.Add("colspan", "7");
            tcHeader[0].Attributes.Add("bgcolor", "white");
            tcHeader[0].Text = "<font color='#000000'>" + ddl_time.SelectedValue + "年" + ddl_halfyear.SelectedItem.Text.Trim() + "结算清单</font></th></tr><tr>";            tcHeader.Add(new TableHeaderCell());
            tcHeader[1].Attributes.Add("colspan", "7");
            tcHeader[1].Attributes.Add("bgcolor", "white");
            tcHeader[1].Attributes.Add("align", "left");
            tcHeader[1].Text = "承修单位:123</th></tr><tr>";            tcHeader.Add(new TableHeaderCell());
            tcHeader[2].Attributes.Add("bgcolor", "#838485");
            tcHeader[2].Text = "<font color='#ffffff'>序号</font>";            tcHeader.Add(new TableHeaderCell());
            tcHeader[3].Attributes.Add("bgcolor", "#838485");
            tcHeader[3].Text = "<font color='#ffffff'>装备名称</font>";            tcHeader.Add(new TableHeaderCell());
            tcHeader[4].Attributes.Add("bgcolor", "#838485");
            tcHeader[4].Text = "<font color='#ffffff'>单位</font>";            tcHeader.Add(new TableHeaderCell());
            tcHeader[5].Attributes.Add("bgcolor", "#838485");
            tcHeader[5].Text = "<font color='#ffffff'>单价</font>";            tcHeader.Add(new TableHeaderCell());
            tcHeader[6].Attributes.Add("bgcolor", "#838485");
            tcHeader[6].Text = "<font color='#ffffff'>数量</font>";            tcHeader.Add(new TableHeaderCell());
            tcHeader[7].Attributes.Add("bgcolor", "#838485");
            tcHeader[7].Text = "<font color='#ffffff'>金额小计</font>";            tcHeader.Add(new TableHeaderCell());
            tcHeader[8].Attributes.Add("bgcolor", "#838485");
            tcHeader[8].Text = "<font color='#ffffff'>备注</font>";            break;
    }
}就是在表头的tcHeader[0].Text的地方写得是我选择时间,但是生成EXCEL后,这里的时间就变成了时间下拉列表的第一个时间1990了,怎么搞的啊

解决方案 »

  1.   

    我的日期根本没设置格式,就是一列字符串“2008年全年结算清单”就这,导入EXCLE后就变成了“1990年上半年结算清单”。其实,除了选择年的有问题,其他所有通过下拉列表选择的数据都有问题,都变成了下拉列表的第一个值,例如我刚才说的“全年结算清单”变成了“上半年结算清单”。
      

  2.   

    先弄个隐藏列绑定ddl选定的值 然后把有ddl的列隐藏了。输出的时候让隐藏列可见 就ok了。
    这样应该可以解决了。
      

  3.   

    但是关键是我是将GV导入到EXCEL里面啊,GV的值已经都生成了,都是对的,但是为什么导出EXCEL后,却又的值从GV里面读,有的却从下拉列表里面读取呢。
      

  4.   

    问题解决了,我在点按钮生成GV的事件里面,用一个viewstate将下拉列表选择的值进行了保存,在绑定GV表头的时间里面,直接用viewstate,这样导出的EXCEL 就是对的了。按钮事件:
    ViewState["bt"] = ddl_time.SelectedValue + "年" + ddl_halfyear.SelectedItem.Text.Trim() + "结算清单" ;GV表头事件:
    tcHeader[0].Text = "<font color='#000000'>" + ViewState["bt"].ToString() + "</font></th></tr><tr>";这样问题就解决了,但是我一直不知道为什么以前那样就不行,会出现问题,虽然解决了,但是还是很郁闷的。
      

  5.   

    我提个问题:用上面这种方法导数据到EXCEL表中时,只限制当数据量很小的情况下,当数据量很大的时候(比如说有上万条记录)的时候用什么方法导数据会快些?
      

  6.   

    跟踪调试下看它 ddl_time.SelectedValue 取到的到底是啥值不就成了么