导出问题

handy_wzh 2009-12-16 04:47:23
在gridview第一列中放一个模板列
在模板列中放一个checkbox,表示一个字段的状态
该字段表示是否导出该行数据
如果选中某些行的checkbox,单击button按钮就要把选中的数据导出到excel(要弹出下载页面)
另:gridview中并没有完全显示数据库表中各字段的数据,但导出的时候就要按数据库表中所有的字段导出。


下面方法导出,为什么说str转换成Int时出错?还有下面的导出方法是否恰当?


protected void btnexcel_Click(object sender, EventArgs e)
{
SqlConnection strcon = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["strcon"]);
strcon.Open();
string str = "";
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("chk");
if (cbox.Checked == true)
{
str += Convert.ToInt32(GridView1.DataKeys[i].Value) + ",";
}
}
string sql = "select Code_ID as 编码,Sort1 as 分类,Content as 内容 from Fault where ID in ('" + str + "')";
SqlDataAdapter sda = new SqlDataAdapter(sql, strcon);
DataSet ds = new DataSet();

//填充数据集
sda.Fill(ds);
DataTable dt = ds.Tables[0];
//清除客户端当前显示
Response.Clear();
Response.Buffer = true;
//输出类型为Word
Response.ContentType = "application/vnd.ms-word";
//输出类型为Excel
Response.ContentType = "application/vnd.ms-excel";
Response.ContentEncoding = System.Text.Encoding.UTF8;
//设置显示的字和内容要存的形式
Response.Charset = "Word文档";
this.EnableViewState = false;
StringWriter oStringWriter = new StringWriter();
HtmlTextWriter oHtmlTextWriter = new HtmlTextWriter(oStringWriter);
GridView gd = new GridView();
//返回DataTable
gd.DataSource = dt;
gd.DataBind();
gd.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();

}


...全文
152 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
handy_wzh 2009-12-17
  • 打赏
  • 举报
回复
我在页面执行的时候,是没有''的,我得的ID是:68,67,66,65,64,63,45,44,43,42,获取的时候多了个“,”,用str=str.substring(str.length-1)去不掉那个","

而且我不用str获取ID,直接用

select Code_ID as 编码,Sort1 as 分类,Content as 内容 from Fault where ID in (68,67,66,65,64,63,45,44,43,42)

是可以导出的,但一旦用这个: str += Convert.ToInt32(GridView1.DataKeys[i].Value) + ",";
就出错了。
lhappyb 2009-12-17
  • 打赏
  • 举报
回复
数据库里直接执行"select Code_ID as 编码,Sort1 as 分类,Content as 内容 from Fault where ID in ('68','67','66','65','64','63','45','44','43','42')"
这样有没错
handy_wzh 2009-12-17
  • 打赏
  • 举报
回复
问题还是无法解决。
lhappyb 2009-12-17
  • 打赏
  • 举报
回复
笨方法,str= str.Substring(str.Length - 1)去掉最后的,
lhappyb 2009-12-17
  • 打赏
  • 举报
回复
最后的","号去掉啊
handy_wzh 2009-12-17
  • 打赏
  • 举报
回复
楼上的,我按你说的改了,但又出现了错误:

第 1 行: ')' 附近有语法错误。
comzheng 2009-12-17
  • 打赏
  • 举报
回复
另外后面那逗号的处理下,应该就可以了。
comzheng 2009-12-17
  • 打赏
  • 举报
回复
楼主你那sql语句错了吧
应该是
string sql = "select Code_ID as 编码,Sort1 as 分类,Content as 内容 from Fault where ID in (" + str + ")";
不然加了个单引号里面就是字符串了。
lhappyb 2009-12-17
  • 打赏
  • 举报
回复
那这个就肯定错拉字符串怎么专int呢,
你先拼成分"('68','67','66','65','64','63','45','44','43','42')"
而且最后面一个","要处理好,这样才能in 的
chenyunkun2008 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 handy_wzh 的回复:]
我测试过了,可以取出ID,就是转换的时候出错:

错误如下:

将 varchar 值 '68,67,66,65,64,63,45,44,43,42,' 转换为数据类型为 int 的列时发生语法错误。
[/Quote]

你的方法传值是不是有问题,int而现在传值是string所以有问题
string sql = "select Code_ID as 编码,Sort1 as 分类,Content as 内容 from Fault where ID in ('" + str + "')";
qq18527575 2009-12-17
  • 打赏
  • 举报
回复
楼主多了一个:“,”号
这就是错误
在数据库里报的错
handy_wzh 2009-12-17
  • 打赏
  • 举报
回复
我测试过了,可以取出ID,就是转换的时候出错:

错误如下:

将 varchar 值 '68,67,66,65,64,63,45,44,43,42,' 转换为数据类型为 int 的列时发生语法错误。
chengcheng1253 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lovely_baby 的回复:]
楼主最好 设断点跟踪到sql 语句
看看sql是什么 ??
先放到sql中执行看看 是否正确
感觉就是你的sql出问题了~~
[/Quote]
单步下 啥问题都能解决了 前提:要是语句没写错的话~~
Lovely_baby 2009-12-17
  • 打赏
  • 举报
回复
楼主最好 设断点跟踪到sql 语句
看看sql是什么 ??
先放到sql中执行看看 是否正确
感觉就是你的sql出问题了~~
handy_wzh 2009-12-17
  • 打赏
  • 举报
回复
就是根据ID取得数据库中的数据的一个数据集呢。
jidianxueyuan 2009-12-17
  • 打赏
  • 举报
回复
跟下看下语句的结果是什么

string sql = "select Code_ID as 编码,Sort1 as 分类,Content as 内容 from Fault where ID in ('" + str + "')";
handy_wzh 2009-12-17
  • 打赏
  • 举报
回复
判断了,问题还是存在,咋弄啊?
jidianxueyuan 2009-12-17
  • 打赏
  • 举报
回复
str += Convert.ToInt32(GridView1.DataKeys[i].Value) + ",";
你这块加的
这样去掉就行了
str= str.Substring(str.Length - 1)
chenhaoying 2009-12-16
  • 打赏
  • 举报
回复
GridView1.DataKeys[i].Value的值是不是为空,或者不是整数型。转换时先判断一下
handy_wzh 2009-12-16
  • 打赏
  • 举报
回复
那怎么解决呢?
加载更多回复(1)

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧