我的问题挺奇怪的
当点击“删除”时还可以正常执行删除,点击“更改数量”就会出现“更改”“取消”两个按键但是,点击“取消”时竟然调用的删除功能(DataGrid_Delete())没有响应“取消”应有的功能
点击“更改数量时”没有任何反应!
这是我的毕业设计我是新手,时间真宝贵呀
希望高手能帮帮我 谢谢 在cart.aspx中这样定义的的
......
<%@ Page Inherits="cart" Src="cart.cs" %>
.........
<tr>
<td align="center">
<asp:DataGrid id="dg" runat="server"
Width="500" BackColor="#ccccff"
BorderColor="black" ShowFooter="false"
CellPadding=3 CellSpacing="0"
Font-Name="Verdana" Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
OnEditCommand="DataGrid_Edit"
OnCancelCommand="DataGrid_Cancel"
OnUpdateCommand="DataGrid_Update"
OnDeleteCommand="DataGrid_Delete"
AutoGenerateColumns="false"
DataKeyField="BookID"
MaintainState="false">
<Columns>
<asp:EditCommandColumn EditText="更改数量" CancelText="取消"
UpdateText="更新" ItemStyle-Wrap="false"/>
<asp:ButtonColumn Text="删除" CommandName="Delete" ItemStyle-Wrap="false"/>
<asp:BoundColumn HeaderText="书名" DataField="BookID" ReadOnly="True"/>
<asp:BoundColumn HeaderText="ISBN书号" DataField="ISBN书号" ReadOnly="True"/>
<asp:BoundColumn HeaderText="原价" DataField="SalePrice" ReadOnly="True" />
<asp:BoundColumn HeaderText="现价" DataField="MemberPrice" ReadOnly="True"/>
<asp:BoundColumn HeaderText="数量" DataField="i" />
<asp:BoundColumn HeaderText="小计" DataField="Expr1003" ReadOnly="True" />
<asp:BoundColumn HeaderText="日期" ReadOnly="True"/>
</Columns>
</asp:DataGrid>
</td>
</tr>
.......
在cart.cs中using System;
using System.Web;
using System.Collections;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OleDb;
using BookShop;public class cart : Page
{
public DataGrid dg;
。
public void DataGrid_Cancel(Object sender,DataGridCommandEventArgs E)
{
dg.EditItemIndex = -1;
BindGrid();
}
public void DataGrid_Update(Object sender,DataGridCommandEventArgs E)
{
OleDbConnection Conn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+
"Data Source="+Server.MapPath("BookShop.mdb"));
string strSQL2 = "UPDATE Cart SET "+
"i="+((TextBox)E.Item.Cells[6].Controls[0]).Text
+" where BookID='"+dg.DataKeys[(int)E.Item.ItemIndex]+"'";
OleDbCommand cm2 = new OleDbCommand(strSQL2,Conn);
Conn.Open();
try
{
cm2.ExecuteNonQuery();
dg.EditItemIndex=-1;
MyLabel.Text="ok";
}
catch (OleDbException)
{
MyLabel.Text="no";
}
cm2.Connection.Close();
// 更新DataGrid
BindGrid();
}
public void DataGrid_Edit(Object sender,DataGridCommandEventArgs E)
{
//Response.Redirect("index.aspx");
dg.EditItemIndex = (int)E.Item.ItemIndex;
BindGrid();
} // 处理删除事件
public void DataGrid_Delete(Object sender,DataGridCommandEventArgs E)
{
OleDbConnection Conn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+
"Data Source="+Server.MapPath("BookShop.mdb"));
String strSQL="DELETE FROM Cart WHERE BookID='"
+ dg.DataKeys[(int)E.Item.ItemIndex]+"'";
OleDbCommand cm = new OleDbCommand(strSQL,Conn);
Conn.Open();
try
{
cm.ExecuteNonQuery();
MyLabel.Text="ok";
}
catch (OleDbException)
{
MyLabel.Text="no";
}
Conn.Close(); BindGrid();
}
public void BindGrid()
{
Cart cart=new Cart();
string sql1="select Cart.BookID, SalePrice, MemberPrice,MemberPrice*i,ISBN书号, i from Cart,BookInfo where UserID='"+Session["username"]+"' AND Cart.BookID=BookInfo.BookID";
DataSet ds1 = new DataSet();
ds1=cart.GetDataSet(sql1);
dg.DataSource=ds1;
dg.DataBind();
}
。
。
}
当点击“删除”时还可以正常执行删除,点击“更改数量”就会出现“更改”“取消”两个按键但是,点击“取消”时竟然调用的删除功能(DataGrid_Delete())没有响应“取消”应有的功能
点击“更改数量时”没有任何反应!
这是我的毕业设计我是新手,时间真宝贵呀
希望高手能帮帮我 谢谢 在cart.aspx中这样定义的的
......
<%@ Page Inherits="cart" Src="cart.cs" %>
.........
<tr>
<td align="center">
<asp:DataGrid id="dg" runat="server"
Width="500" BackColor="#ccccff"
BorderColor="black" ShowFooter="false"
CellPadding=3 CellSpacing="0"
Font-Name="Verdana" Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
OnEditCommand="DataGrid_Edit"
OnCancelCommand="DataGrid_Cancel"
OnUpdateCommand="DataGrid_Update"
OnDeleteCommand="DataGrid_Delete"
AutoGenerateColumns="false"
DataKeyField="BookID"
MaintainState="false">
<Columns>
<asp:EditCommandColumn EditText="更改数量" CancelText="取消"
UpdateText="更新" ItemStyle-Wrap="false"/>
<asp:ButtonColumn Text="删除" CommandName="Delete" ItemStyle-Wrap="false"/>
<asp:BoundColumn HeaderText="书名" DataField="BookID" ReadOnly="True"/>
<asp:BoundColumn HeaderText="ISBN书号" DataField="ISBN书号" ReadOnly="True"/>
<asp:BoundColumn HeaderText="原价" DataField="SalePrice" ReadOnly="True" />
<asp:BoundColumn HeaderText="现价" DataField="MemberPrice" ReadOnly="True"/>
<asp:BoundColumn HeaderText="数量" DataField="i" />
<asp:BoundColumn HeaderText="小计" DataField="Expr1003" ReadOnly="True" />
<asp:BoundColumn HeaderText="日期" ReadOnly="True"/>
</Columns>
</asp:DataGrid>
</td>
</tr>
.......
在cart.cs中using System;
using System.Web;
using System.Collections;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OleDb;
using BookShop;public class cart : Page
{
public DataGrid dg;
。
public void DataGrid_Cancel(Object sender,DataGridCommandEventArgs E)
{
dg.EditItemIndex = -1;
BindGrid();
}
public void DataGrid_Update(Object sender,DataGridCommandEventArgs E)
{
OleDbConnection Conn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+
"Data Source="+Server.MapPath("BookShop.mdb"));
string strSQL2 = "UPDATE Cart SET "+
"i="+((TextBox)E.Item.Cells[6].Controls[0]).Text
+" where BookID='"+dg.DataKeys[(int)E.Item.ItemIndex]+"'";
OleDbCommand cm2 = new OleDbCommand(strSQL2,Conn);
Conn.Open();
try
{
cm2.ExecuteNonQuery();
dg.EditItemIndex=-1;
MyLabel.Text="ok";
}
catch (OleDbException)
{
MyLabel.Text="no";
}
cm2.Connection.Close();
// 更新DataGrid
BindGrid();
}
public void DataGrid_Edit(Object sender,DataGridCommandEventArgs E)
{
//Response.Redirect("index.aspx");
dg.EditItemIndex = (int)E.Item.ItemIndex;
BindGrid();
} // 处理删除事件
public void DataGrid_Delete(Object sender,DataGridCommandEventArgs E)
{
OleDbConnection Conn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+
"Data Source="+Server.MapPath("BookShop.mdb"));
String strSQL="DELETE FROM Cart WHERE BookID='"
+ dg.DataKeys[(int)E.Item.ItemIndex]+"'";
OleDbCommand cm = new OleDbCommand(strSQL,Conn);
Conn.Open();
try
{
cm.ExecuteNonQuery();
MyLabel.Text="ok";
}
catch (OleDbException)
{
MyLabel.Text="no";
}
Conn.Close(); BindGrid();
}
public void BindGrid()
{
Cart cart=new Cart();
string sql1="select Cart.BookID, SalePrice, MemberPrice,MemberPrice*i,ISBN书号, i from Cart,BookInfo where UserID='"+Session["username"]+"' AND Cart.BookID=BookInfo.BookID";
DataSet ds1 = new DataSet();
ds1=cart.GetDataSet(sql1);
dg.DataSource=ds1;
dg.DataBind();
}
。
。
}
不太明白生么是后台有事件注册
我把cart.cs全粘上来,大家帮忙看看
using System;
using System.Web;
using System.Collections;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OleDb;
using BookShop;public class cart : Page
{
public DataGrid dg;
public Label MyLabel;
public Panel Login;
public Panel Login1;
void Page_Load(Object sender, EventArgs e)
{
User user=new User();
MyLabel.Text=user.HelloWorld();
string sql="select * from UserInfo where UserID='"+Session["username"]+"' and Password='"+Session["password"]+"'";
MyLabel.Text=sql;
DataSet ds = new DataSet();
ds=user.GetDataSet(sql);
if (0==ds.Tables["grade"].Rows.Count)
{//是不是会员
MyLabel.Text = "找不到此使用者代號 請重新輸入"+Session["username"]; Login.Visible=true;
Login1.Visible=false;
}
else
{
/*Cart cart=new Cart();
string sql1="select * from Cart where UserID='"+Session["username"]+"'";
DataSet ds1 = new DataSet();
ds1=cart.GetDataSet(sql1);
dg.DataSource=ds1;
dg.DataBind();*/
BindGrid();
Login.Visible=false;
Login1.Visible=true;
}
} public void DataGrid_Cancel(Object sender,DataGridCommandEventArgs E)
{
dg.EditItemIndex = -1;
BindGrid();
}
public void DataGrid_Update(Object sender,DataGridCommandEventArgs E)
{
OleDbConnection Conn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+
"Data Source="+Server.MapPath("BookShop.mdb"));
string strSQL2 = "UPDATE Cart SET "+
"i="+((TextBox)E.Item.Cells[6].Controls[0]).Text
+" where BookID='"+dg.DataKeys[(int)E.Item.ItemIndex]+"'";
OleDbCommand cm2 = new OleDbCommand(strSQL2,Conn);
Conn.Open();
try
{
cm2.ExecuteNonQuery();
dg.EditItemIndex=-1;
MyLabel.Text="ok";
}
catch (OleDbException)
{
MyLabel.Text="no";
}
cm2.Connection.Close();
// 更新DataGrid
BindGrid();
}
public void DataGrid_Edit(Object sender,DataGridCommandEventArgs E)
{
//Response.Redirect("index.aspx");
dg.EditItemIndex = (int)E.Item.ItemIndex;
BindGrid();
} // 处理删除事件
public void DataGrid_Delete(Object sender,DataGridCommandEventArgs E)
{
OleDbConnection Conn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+
"Data Source="+Server.MapPath("BookShop.mdb"));
String strSQL="DELETE FROM Cart WHERE BookID='"
+ dg.DataKeys[(int)E.Item.ItemIndex]+"'";
OleDbCommand cm = new OleDbCommand(strSQL,Conn);
Conn.Open();
try
{
cm.ExecuteNonQuery();
MyLabel.Text="ok";
}
catch (OleDbException)
{
MyLabel.Text="no";
}
Conn.Close(); BindGrid();
}
public void BindGrid()
{
Cart cart=new Cart();
string sql1="select Cart.BookID, SalePrice, MemberPrice,MemberPrice*i,ISBN书号, i from Cart,BookInfo where UserID='"+Session["username"]+"' AND Cart.BookID=BookInfo.BookID";
DataSet ds1 = new DataSet();
ds1=cart.GetDataSet(sql1);
dg.DataSource=ds1;
dg.DataBind();
}
}
<asp:DataGrid id="dg" runat="server"
OnEditCommand="dg_Edit" OnCancelCommand="dg_Cancel" OnUpdateCommand="dg_Update" OnDeleteCommand="dg_Delete" .....
并且将在后台的相应的事件名称也该一下就可以了。如:
public void DataGrid_Cancel(Object sender,DataGridCommandEventArgs E)改成public void dg_Cancel(Object sender,DataGridCommandEventArgs E).
你的DataGrid id="dg" ,事件名称DataGrid_Cancel时肯定对不上头啊,这下问题的所在你总算明白了吧?