出现了一个很离谱的问题,关于DATAGRID控件编辑....当我执行更新的时候,没有任何反应,当我取消的时候,会删除数据,当我删除的时候,也会删除数据,其它的操作正常真是一个超级离谱的,相关源代码如下:大家一定要帮看一下...<%@ Page validateRequest="false" Autoeventwireup="true" Language="vb" src="functions.vb" inherits="Functions" ContentType="text/html" %>
<script runat="server" language="VB">
Sub Page_Load(Src As Object, E As EventArgs)
MCart.DataSource=GetDataView("select * from bs_cart where b_er='" + session("btshop_user")  + "'","bs_cart","bs_cart")
    MCart.DataBind()
End Sub

Sub Clear_Cart(Sender As Object,e As System.Web.UI.ImageClickEventArgs)
    Runsql("DELETE FROM bs_cart WHERE b_er='"+ session("btshop_user") +"'")
Response.Redirect("cart.aspx")
End Sub

sub dgdata_edit(obj as object, e as datagridcommandeventargs)
mcart.edititemindex=e.item.itemindex
    MCart.DataBind()
end sub

sub dgdata_delete(obj as object, e as datagridcommandeventargs)
    RunSql("DELETE FROM bs_cart WHERE b_er='"+ session("btshop_user") +"' and id='" +  Cstr(MCart.datakeys(E.Item.Itemindex)) + "'")
MCart.DataSource=GetDataView("select * from bs_cart where b_er='" + session("btshop_user")  + "'","bs_cart","bs_cart")
    MCart.DataBind()
end sub

sub dgdata_update(obj as object, e as datagridcommandeventargs)
    response.Write("UPDATE bs_cart SET b_num='"+ ctype(e.item.cells(5).controls(0),textbox).text +"' WHERE id='" +  Cstr(MCart.datakeys(E.Item.Itemindex)) + "'")
MCart.DataSource=GetDataView("select * from bs_cart where b_er='" + session("btshop_user")  + "'","bs_cart","bs_cart")
mcart.edititemindex=-1
MCart.DataBind()
end sub

sub dgdata_cancel(obj as object, e as datagridcommandeventargs)
'mcart.edititemindex=-1
   ' MCart.DataBind()
end sub

Sub Add_order(Sender As Object,e As System.Web.UI.ImageClickEventArgs)
    Response.Redirect("payment.aspx")
End Sub
</script>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title><%=Session("Btshop_user")%>的购物车</title>
<link href="site_css.css" rel="stylesheet" type="text/css">
</head>
<body>
<form runat="server"><asp:DataGrid  AllowPaging="false" AutoGenerateColumns="false" BackColor="#CCCCCC" BorderStyle="groove" BorderWidth="5" DataKeyField="id" EnableViewState="false" HorizontalAlign="Center" ID="MCart" runat="server" Width="500" OnUpdateCommand="dgdata_update" OnEditCommand="dgdata_edit" OnCancelCommand="dgdata_cancel" OnDeleteCommand="dgdata_delete" > <HeaderStyle Font-Bold="True" BackColor="Tan" Height="25" BorderStyle="Dotted"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="ID" HeaderText="ID" ReadOnly="true"></asp:BoundColumn>
<asp:HyperLinkColumn DataNavigateUrlField="id" DataNavigateUrlFormatString="product.aspx?id={0}" HeaderText="商品名称"  Target ="_blank" DataTextField="m_name" ItemStyle-HorizontalAlign="center" HeaderStyle-HorizontalAlign="center" />
<asp:BoundColumn DataField="m_price1" HeaderText="市场价格" ReadOnly="true" ItemStyle-HorizontalAlign="center" HeaderStyle-HorizontalAlign="center"></asp:BoundColumn>
<asp:BoundColumn DataField="m_price2" HeaderText="会员价格" ReadOnly="true" ItemStyle-HorizontalAlign="center" HeaderStyle-HorizontalAlign="center"></asp:BoundColumn>
<asp:BoundColumn DataField="m_price3" HeaderText="VIP价格" ReadOnly="true" ItemStyle-HorizontalAlign="center" HeaderStyle-HorizontalAlign="center"></asp:BoundColumn>

<asp:TemplateColumn HeaderText="购买数量">
<ItemTemplate>
  <div align=center><asp:Label Text='<%# Container.DataItem("b_num")%>' Id="mb_num1" runat="server" /></div>
</ItemTemplate>
<EditItemTemplate>
               <asp:Textbox Text='<%#Container.DataItem("b_num")%>' Id="mb_num2" size=3 runat="server" />
</EditItemTemplate>
</asp:TemplateColumn>

<asp:editcommandcolumn EditText="点击修改" CancelText="取消" UpdateText="更新" HeaderText="修改数量" ItemStyle-HorizontalAlign="center" HeaderStyle-HorizontalAlign="center"/> 
<asp:BoundColumn DataField="b_sum" HeaderText="小   计" ReadOnly="true" ItemStyle-HorizontalAlign="center" HeaderStyle-HorizontalAlign="center"></asp:BoundColumn>
<asp:buttoncolumn HeaderText="删除" text="删除" commandname="delete"/> 
</Columns>
</asp:DataGrid>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#D4D0C8">
  <tr>
    <td>&nbsp;<img src="images/cart01.gif" style="cursor:hand" onclick="window.close()">
<asp:ImageButton ImageUrl="images/cart02.gif" ID="Clear_bing" runat="server" OnClick="Clear_Cart" />
    <asp:imageButton ImageUrl="images/cart04.gif" ID="Pay_bing" runat="server" OnClick="Add_order"/>
</td>
  </tr>
</table>
</form>
</body>
</html>/////////////////////////////////////////////functions.vb中的方法
    'return to a dataview decided by tsql,tcatalog,and table 
Function GetDataView(TSql As String ,Tcatalog As String,Ttable As string)
Dim myConnection2 As New SqlConnection(ConfigurationSettings.AppSettings("Sqlstr"))
Dim MyCommand2 As SqlDataAdapter = New SqlDataAdapter(TSql, MyConnection2)
Dim MyDS2 As DataSet=New DataSet()
MyCommand2.Fill(MyDS2, Tcatalog)
Dim MyDV2 As DataView=MyDS2.Tables(Ttable).DefaultView
Return MyDV2
End Function就高人走路了路过了,一定要指点一下。。万分感谢

解决方案 »

  1.   

    首先你要在Page_Load加if not IsPostBack,防止每次刷新都重新绑定;
    然后你“取消”部分的代码注释掉了,去掉注释试一试;
    最后就是你的update过程里我只看到select语句,没有update语句。
      

  2.   

    TO: GDNPC(烟锁池塘柳,炮镇海城楼) 首先表示百倍的真诚的感谢..
    Page_Load中已经加上了,If not Ispostback 再绑定,但还是不行
    取消的代码注释不注释都是一样的,我就是为了加上注释,看不执行任何操作,是否仍然会删除记录,结果一样.加不加都会把记录删除..
    Update中以前是runsql("") 后来为了看他能不能得到执行,输出文字来.但是不成功..根本得不到执行..请大家继续表示观众吧...
      

  3.   

    没运行的话看看private void InitializeComponent()里有没有绑定到事件
      

  4.   

    有可能是private void InitializeComponent()里事件都绑错了
      

  5.   

    OnUpdateCommand="dgdata_update" OnEditCommand="dgdata_edit" OnCancelCommand="dgdata_cancel" OnDeleteCommand="dgdata_delete"
    用了这个,private void InitializeComponent()不需要再绑定事件
      

  6.   

    OnUpdateCommand="dgdata_update" OnEditCommand="dgdata_edit" OnCancelCommand="dgdata_cancel" OnDeleteCommand="dgdata_delete"
    用了这个,private void InitializeComponent()不需要再绑定事件
    ============================================
    不妨再绑绑,因为你的代码很明显是调用错了
      

  7.   

    这代码真乱,Autoeventwireup="true" ,用VS.net默认是false,所以需要自己加事件委托。
    DW等工具默认是true,如果自己再加就执行2次。如果自己不加,那名字必须起的完全一样才可以。上面的代码实在看着晕,不细看了,自己找找问题吧。