无法将类型“object”隐式转换为“string”。存在一个显式转换(是否缺少强制转换?)

liustaration 2012-01-08 07:41:53
头快炸了,到底错在哪里?老是提示:无法将类型“object”隐式转换为“string”。存在一个显式转换(是否缺少强制转换?)

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using GROUP.Manage;

public partial class AppFormEdit : System.Web.UI.Page
{
BaseClass BaseClass1 = new BaseClass();

protected void Page_Load(object sender, EventArgs e)
{
if (Session["admin"] == null)
{
Response.Redirect("login.aspx");
}

if (!Page.IsPostBack)
{
bindgrig();
}


}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
//删除行处理
string strsql = "delete from 资产 where 请购单编号=" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "";

BaseClass1.execsql(strsql);

bindgrig();

}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
//改变显示页面
GridView1.PageIndex = e.NewPageIndex;
bindgrig();

}

void bindgrig()
{
string strsql = "select 请购单编号,资产名称,资产类别,是否进口,厂家,型号规格,数量,预算单价,预算总价 from 资产";
DataTable dt = BaseClass1.ReadTable(strsql);
GridView1.DataSource = dt;
GridView1.DataBind();

}


}
...全文
472 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
EnForGrass 2012-01-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 caozhy 的回复:]
贴错的那一行就行了。
[/Quote]
贴错误吧,看不到错误大家也帮不了你啊,瞎猜没用
qqq12003 2012-01-09
  • 打赏
  • 举报
回复
string strsql = "delete from 资产 where 请购单编号='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'"; 编号可用用toString?
彳亍乐儿 2012-01-09
  • 打赏
  • 举报
回复

Session["admin"] == null
这句本来就是错误的
null的意义是既没有空间也没有地址,不存在任何引用
Session["admin"] 是有空间有地址,所以两者不能匹配

如果要判断Session["admin"]为空的话,就到global里面声明一下Session["admin"].tostring()==""
这样才可以
hoye423337 2012-01-09
  • 打赏
  • 举报
回复
强制转换么?
Convert.ToString(object变量);
object变量.toString();

???
新手。只懂这些。也没看代码
zh6335901 2012-01-08
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 guoyanhong1111 的回复:]

GridView1.DataKeys[e.RowIndex].Value.ToString()
错的应该是这里,因为有可能GridView1.DataKeys[e.RowIndex].Value为NUll,当你光标放到网格控件的头部时,就会报错。因为e.RowIndex<0是为负数的,则GridView1.DataKeys[e.RowIndex].Value再去ToString()方法就会报错……
[/Quote]
不是这个错,那样会报索引超出界限的错误
guoyanhong1111 2012-01-08
  • 打赏
  • 举报
回复
GridView1.DataKeys[e.RowIndex].Value.ToString()
错的应该是这里,因为有可能GridView1.DataKeys[e.RowIndex].Value为NUll,当你光标放到网格控件的头部时,就会报错。因为e.RowIndex<0是为负数的,则GridView1.DataKeys[e.RowIndex].Value再去ToString()方法就会报错.
所以建议这样写:
if(e.RowIndex>=0)
{
int keyID=Convert.toInt32(GridView1.DataKeys[e.RowIndex].Value);
string strsql = string.Format("delete from 资产 where 请购单编号={0}",keyID );

}

我这里把你的请购单编号认为的是Int型的~
ayzen1988 2012-01-08
  • 打赏
  • 举报
回复
双击报错的信息看看哪里报错呀?!
暖枫无敌 2012-01-08
  • 打赏
  • 举报
回复
是不是这个页面是复制粘贴过来的,后来重命名,但是aspx页面的Inherit属性和cs代码页中的命名空间不一致造成的,请仔细检查一下。
liustaration 2012-01-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 caozhy 的回复:]

那你贴出其中任意一条
[/Quote]
贴上截图给你看下,双击错误不能自动跳到错误页面。
liustaration 2012-01-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lyd690962514 的回复:]

别的地方没看出来
不过这句话应该这样写吧。。。。
string strsql = "delete from 资产 where 请购单编号='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
[/Quote]
这个好像没有关系,之前这么写也能运行,可能是关联页面出错了,我再看一下
threenewbee 2012-01-08
  • 打赏
  • 举报
回复
那你贴出其中任意一条
liustaration 2012-01-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 caozhy 的回复:]

贴错的那一行就行了。
[/Quote]
关键不知道哪里错。提示有6个地方同样的错误,会和ASPX页面有关系吗?
北极小猪 2012-01-08
  • 打赏
  • 举报
回复
别的地方没看出来
不过这句话应该这样写吧。。。。
string strsql = "delete from 资产 where 请购单编号='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
threenewbee 2012-01-08
  • 打赏
  • 举报
回复
贴错的那一行就行了。

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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