关于asp.net中listviewUpdateCommand的问题

项目遇到的问题如下,当我点击“更新”按钮时,出现如下错误:我的项目里有一个asp:ListView,其ItemTemplate,EditItemTemplate,SqlD... 项目遇到的问题如下,当我点击“更新”按钮时,出现如下错误:

我的项目里有一个asp:ListView,其ItemTemplate,EditItemTemplate,SqlDataSource,还有数据库结构如下图:

listview的OnItemUpdating事件如下
public void listview1_ItemUpdating(Object sender, ListViewUpdateEventArgs e)
{
ListViewItem item = listview1.Items[e.ItemIndex];
Label projectNO = (Label)item.FindControl("projectNO");
TextBox priority = (TextBox)item.FindControl("priority");
DropDownList wpdd = (DropDownList)item.FindControl("workshop");
DropDownList tmdd = (DropDownList)item.FindControl("team");
string ws = wpdd.SelectedValue;
string tm = tmdd.SelectedValue;
string priority1 = priority.Text;
string projectNO1 = projectNO.Text;
SqlDataSource1.UpdateCommand = "UPDATE 生产计划表 SET 完成车间编号 = " + ws + ",完成班组编号 = " + tm + ", 优先级 = '" + priority1 + "' WHERE 工程号 = '" + projectNO1 + "'";
}
我也知道这可能是一个非常小的问题,我的UpdateCommand 在MS Server 里调试就一点问题没有,但是一到asp.net里就出现如上问题,现在已经找了几天也找不到,求哪位大侠帮忙找bug,谢过!
展开
 我来答
翱记蹈cP
推荐于2016-04-12 · TA获得超过349个赞
知道大有可为答主
回答量:1261
采纳率:0%
帮助的人:834万
展开全部
先分析原因。
你出现这个错误是因为你没有了解ASP.NET的工作原理。ASP.Net 和php,jsp ,asp等服务器语言一样 都是为了生成可供浏览器解析的页面,而可供浏览器解析的语言只有HTML。

1,如果你在aspx页面中插入一个asp:LinkButton 那么运行页面后 在浏览器中查看源代码你会发现这个标签实际被转为了一个<a>标签。
2,为什么你的写法不会转换呢?因为首先 传递给Literal1.Text 的值在asp.net中作为一段字符串被直接输出到浏览器中。那么你的写法到浏览器后源代码中仍然是一个asp:LinkButton 标签,而这个标签是无法被浏览器正确解析的。

解决办法:
知道了原因,那么如果非要按照你的写法去写,那么应该是这样的:
Literal1.Text = "<li>" + ((users)Session["users"]).Name.ToString() + "</li><li> </li><li><a ID='LinkButton1' onclick='LinkButton1_Click1'>注销</a></li><li> </li><li>信息修改</li><li> </li>";
但是当你修改完后发现点击注销按钮依然不能执行!为什么呢?
因为你的LinkButton1_Click1 事件并没有在asp.net中被解析为可供浏览器识别的js代码。

如何解决?

在aspx页面中写一个asp:LinkButton按钮:
<asp:LinkButton ID='LinkButton2' runat='server' onclick='LinkButton1_Click1'>注销</asp:LinkButton>

运行页面,查看源代码 看看这个新加的注销按钮被解析为了什么html代码,大概如下
<a id="LinkButton2" onclick="xxxxx"></a>

将新加的linkbutton 设置不可见属性
<asp:LinkButton ID='LinkButton2' runat='server' visible="false" onclick='LinkButton1_Click1'>注销</asp:LinkButton>

重新修改后台代码
Literal1.Text = "<li>" + ((users)Session["users"]).Name.ToString() + "</li><li> </li><li><a ID='LinkButton1' onclick='xxxxx'>注销</a></li><li> </li><li>信息修改</li><li> </li>";
//也就是将标签的js事件绑定到那个隐藏的注销按钮事件上。
希望对你有帮助
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式