'=' 附近有语法错误

tq_qiang 2009-03-05 05:02:44
string sql = "delete from ME_Info where MI_AssetSerial="+GridView1.Rows[row.RowIndex].Cells[1].Text;
这么写报'=' 附近有语法错误。如果我改成string sql = "delete from ME_Info where MI_AssetSerial='"+GridView1.Rows[row.RowIndex].Cells[1].Text+"'";在调试的时候显示delete from ME_Info where MI_AssetSerial=''没有获取值。我的GridView第一列是个模板列(里面有checkbox可以全选和删除功能),第二列是MI_AssetSerial列。怎么解决啊。
...全文
218 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
tq_qiang 2009-03-13
  • 打赏
  • 举报
回复
没有我想要的答案,不过我自己还是做出来了,谢谢大家帮忙。
云想慕尘 2009-03-06
  • 打赏
  • 举报
回复
GridView1.Rows[row.RowIndex].Cells[1]里面放的是什么东西,不需要转换类型吗?
suners 2009-03-06
  • 打赏
  • 举报
回复
再慢慢排查下 问题肯定就在你说的那个地方 断点跟踪下
suners 2009-03-06
  • 打赏
  • 举报
回复
再慢慢排查下 问题肯定就在你说的那个地方 断点跟踪下
tq_qiang 2009-03-06
  • 打赏
  • 举报
回复

//遍历删除
protected void btnDelete_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
CheckBox c = row.FindControl("ckItem") as CheckBox;
if (c.Checked)
{
string aa = GridView1.Rows[row.RowIndex].Cells[2].Text;
string sql = "delete from ME_Info where MI_AssetSerial='" + aa + "'";
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString());
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
cmd.ExecuteNonQuery();
}
}
Server.Transfer("manage.aspx");
}

//CheckBox全选时,ckItem有一个不选,ckHeader状态为不钩选
//ckItem全选时,ckHeader状态为钩选
protected void ckItem_CheckedChanged(object sender, EventArgs e)
{
CheckBox cbHeader = (CheckBox)GridView1.HeaderRow.FindControl("ckHeader");
foreach (GridViewRow row in GridView1.Rows)
{
CheckBox cbItem = (CheckBox)row.FindControl("ckItem");
if (!cbItem.Checked)
{
cbHeader.Checked = false;
return;
}
}
}




<script language="javascript" type="text/javascript">
function SelectAll(tempControl)
{
//将除头模板中的其它所有的CheckBox取反

var theBox=tempControl;
xState=theBox.checked;

elem=theBox.form.elements;
for(i=0;i<elem.length;i++)
if(elem[i].type=="checkbox" && elem[i].id!=theBox.id)
{
if(elem[i].checked!=xState)
elem[i].click();
}
}
</script>
[code=HTML]
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" EnableViewState="False" DataKeyNames="MI_AssetSerial">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="ckHeader" runat="server" AutoPostBack="false" onclick="javascript:SelectAll(this);"/>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="ckItem" runat="server" AutoPostBack="true" OnCheckedChanged="ckItem_CheckedChanged" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="MI_ID" HeaderText="编号" />
<asp:HyperLinkField HeaderText="固定资产编号" DataTextField="MI_AssetSerial" DataNavigateUrlFields="MI_AssetSerial" DataNavigateUrlFormatString="detail.aspx?MI_AssetSerial={0}"/>
<asp:BoundField HeaderText="设备名称" DataField="MI_Name" />
<asp:BoundField HeaderText="规格型号" DataField="MI_Model" />
<asp:BoundField HeaderText="性能" DataField="MI_Power" />
<asp:BoundField HeaderText="设备类型" DataField="MI_DevType" />
<asp:BoundField HeaderText="购买日期" DataField="MI_PurchaseDate" />
<asp:TemplateField HeaderText="使用记录">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server"><a href='useAnnal.aspx?MI_AssetSerial=<%# DataBinder.Eval(Container,"DataItem.MI_AssetSerial")%>'>查看</a></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
      
<asp:Button ID="btnAssign" runat="server" Text="分配" OnClick="btnAssign_Click" />
<asp:Button ID="btnAdd" runat="server" Text="添加" PostBackUrl="~/erm/register.aspx" />
<asp:Button ID="btnEdit" runat="server" Text="编辑" OnClick="btnEdit_Click" />
<asp:Button ID="btnDelete" runat="server" OnClick="btnDelete_Click" Text="删除" />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</div>
</form>

[/code]
walkghost 2009-03-06
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 tq_qiang 的回复:]
我的Cells[1].Text在GridView中是MI_AssetSerial,此字段在数据库中是nvarchar(50)类型的。我曾经把他改成int类型的就可以
[/Quote]
肯定不是数据类型的问题,你根本就没有取到那个单元格的值啊。。。

你在哪个函数里写的这段代码?
tq_qiang 2009-03-06
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 zzxap 的回复:]
这样
string sql = "delete from ME_Info where MI_AssetSerial='"+GridView1.Rows[e.RowIndex].Cells[1].Controls[0].Text+"'";
[/Quote]

Controls[0]无法点出Text
bjbr 2009-03-06
  • 打赏
  • 举报
回复
GridView和DataGrid有区别

例如在RowDataBound时e.row.cell[i]是取不到值的,改用DataKeys,把需要的值放进去,再使用this.gridview1.datakeys[e.row.rowindex].values[i]来取值
tq_qiang 2009-03-06
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 hhxxcj 的回复:]
怎么,那样是得不到值吗,还是什么意思
[/Quote]

得不到值。调试输出为:delete from ME_Info where MI_AssetSerial=''
zzxap 2009-03-06
  • 打赏
  • 举报
回复
string sql = "delete from ME_Info where MI_AssetSerial='"+GridView1.Rows[e.RowIndex].Cells[1].Tostring()+"'";
tq_qiang 2009-03-06
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 zzxap 的回复:]
string sql = "delete from ME_Info where MI_AssetSerial='"+GridView1.Rows[row.RowIndex].Cells[1].Text+"'";
加号要配对
[/Quote]

我是这样写的。你看题目值看前面的,后面的我说了,我是用string sql = "delete from ME_Info where MI_AssetSerial='"+GridView1.Rows[row.RowIndex].Cells[1].Text+"'"; 写的,可是取值为空
hhxxcj 2009-03-06
  • 打赏
  • 举报
回复
怎么,那样是得不到值吗,还是什么意思
zzxap 2009-03-06
  • 打赏
  • 举报
回复
这样
string sql = "delete from ME_Info where MI_AssetSerial='"+GridView1.Rows[e.RowIndex].Cells[1].Controls[0].Text+"'";


zzxap 2009-03-06
  • 打赏
  • 举报
回复
string sql = "delete from ME_Info where MI_AssetSerial='"+GridView1.Rows[row.RowIndex].Cells[1].Text+"'";
加号要配对
tq_qiang 2009-03-06
  • 打赏
  • 举报
回复
我的Cells[1].Text在GridView中是MI_AssetSerial,此字段在数据库中是nvarchar(50)类型的。我曾经把他改成int类型的就可以
tq_qiang 2009-03-06
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 hhxxcj 的回复:]
你先在外面把
GridView1.Rows[row.RowIndex].Cells[1].Text 的值给一个变量,再把变量给那个SQL语句,试试,那样再打上断点看看是否用值就行了这样应该就不会错了,你试试
[/Quote]
这样也不行,我试过了。
hhxxcj 2009-03-06
  • 打赏
  • 举报
回复
你先在外面把
GridView1.Rows[row.RowIndex].Cells[1].Text 的值给一个变量,再把变量给那个SQL语句,试试,那样再打上断点看看是否用值就行了这样应该就不会错了,你试试
tq_qiang 2009-03-06
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 zjq0034 的回复:]
引用 1 楼 buller 的回复:
GridView1.Rows[row.RowIndex].Cells[1].Text
根据复选框删除的话,不能用row.RowIndex,一行行的判断你的checkbox就是

比较建议用这种方法
[/Quote]
能否给个实例啊
zjq0034 2009-03-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 buller 的回复:]
GridView1.Rows[row.RowIndex].Cells[1].Text
根据复选框删除的话,不能用row.RowIndex,一行行的判断你的checkbox就是
[/Quote]
比较建议用这种方法
tq_qiang 2009-03-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 cndotaci 的回复:]
GridView1.Rows[row.RowIndex].Cells[1]里面放的是什么东西,不需要转换类型吗?
[/Quote]
数据库中我这列的字段设置的是nvarchar(50)。row.RowIndex返回类型是int,是不是要转换类型啊,怎么转换啊。
加载更多回复(14)

62,267

社区成员

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

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

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

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