关于GridView中删除某一行数据。。。
我在页面中的GridView中每行都有的一个删除那一行数据的按钮<asp:ButtonID="btnDel"runat="server"CommandArgument='...
我在页面中的GridView中每行都有的一个删除那一行数据的按钮
<asp:Button ID="btnDel" runat="server" CommandArgument='<%# Eval("Id") %>' CommandName="Delete" Text="删除" />
我在页面后台中设置了
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
int categoryID = Convert.ToInt32(e.CommandArgument);
CartManager cm = new CartManager();
cm.Delete(categoryID);
}
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Button btn = (Button)e.Row.FindControl("btnDel");
btn.Attributes.Add("onclick", "javascript:return " + "confirm('是否要删除该记录? " +
DataBinder.Eval(e.Row.DataItem, "Id") + "')");
}
}
将该行的id值传到某逻辑类,将存储在session中的list中的这行数据删除
PS:我的GridView的数据源就是这个list
但是按了“删除”后,显示得指定DeleteMethod,于是我就:
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="Save" DeleteMethod="Delete" TypeName="BLL.CartManager">
</asp:ObjectDataSource>
PS:Delete就是逻辑类里面那个删除数据的方法
现在问题就来了,Delete是一个带参数(int id)的方法,id就是刚才说道的“该行的id值”,我应该怎么写?谢谢
PS:我按上面的代码按了删除后显示:
ObjectDataSource"ObjectDataSource1"未能找到不带参数的非泛型方法"Delete"。 展开
<asp:Button ID="btnDel" runat="server" CommandArgument='<%# Eval("Id") %>' CommandName="Delete" Text="删除" />
我在页面后台中设置了
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
int categoryID = Convert.ToInt32(e.CommandArgument);
CartManager cm = new CartManager();
cm.Delete(categoryID);
}
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Button btn = (Button)e.Row.FindControl("btnDel");
btn.Attributes.Add("onclick", "javascript:return " + "confirm('是否要删除该记录? " +
DataBinder.Eval(e.Row.DataItem, "Id") + "')");
}
}
将该行的id值传到某逻辑类,将存储在session中的list中的这行数据删除
PS:我的GridView的数据源就是这个list
但是按了“删除”后,显示得指定DeleteMethod,于是我就:
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="Save" DeleteMethod="Delete" TypeName="BLL.CartManager">
</asp:ObjectDataSource>
PS:Delete就是逻辑类里面那个删除数据的方法
现在问题就来了,Delete是一个带参数(int id)的方法,id就是刚才说道的“该行的id值”,我应该怎么写?谢谢
PS:我按上面的代码按了删除后显示:
ObjectDataSource"ObjectDataSource1"未能找到不带参数的非泛型方法"Delete"。 展开
展开全部
前台这样写:
<asp:GridView ID="GridView1" runat="server" Width="70%" AutoGenerateColumns="False" Font-Size="Small" OnRowDataBound="GridView1_RowDataBound" OnRowCommand="GridView1_RowCommand" AllowPaging="True" OnPageIndexChanging="GridView1_PageIndexChanging" PageSize="15">
<Columns>
<asp:BoundField DataField="Number" HeaderText="房间编号" />
<asp:BoundField DataField="BedNumber" HeaderText="床位数" />
<asp:BoundField DataField="Description" HeaderText="房间描述" />
<asp:BoundField DataField="StateName" HeaderText="房间状态" />
<asp:BoundField DataField="GuestNumber" HeaderText="入住人数" />
<asp:BoundField DataField="TypeName" HeaderText="房间类型" />
<asp:TemplateField HeaderText="修改">
<ItemTemplate>
<asp:ImageButton ID="ImageButton2" runat="server" ImageUrl="image/edit.gif" CommandName="Ed" CommandArgument=<%#Eval("RoomId") %>>
</asp:ImageButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="删除">
<ItemTemplate>
<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="image/delete.gif" CommandName="De" CommandArgument=<%#Eval("RoomId") %>>
</asp:ImageButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
后台这样:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
int i;
//执行循环,保证每条数据都可以更新
for (i = 0; i < GridView1.Rows.Count; i++)
{
//首先判断是否是数据行
if (e.Row.RowType == DataControlRowType.DataRow)
{
//当鼠标停留时更改背景色
e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='#A5C5DC'");
//当鼠标移开时还原背景色
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=c");
ImageButton imgbtn = (ImageButton)e.Row.FindControl("ImageButton1");
imgbtn.Attributes.Add("onclick","return confirm('您确认要删除吗?');");
}
}
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
string cmd = e.CommandName;
int roomId = Convert.ToInt32(e.CommandArgument);
if (cmd == "De")
{
RoomManager.DeleteRoomByRoomId(roomId);
}
else if(cmd=="Ed")
{
Page.Server.Transfer("UpdateRooms.aspx?RoomId=" + roomId.ToString());
}
binddate();
}
要写一个删除的方法用来调用。
你试试吧,我的的确可以。
<asp:GridView ID="GridView1" runat="server" Width="70%" AutoGenerateColumns="False" Font-Size="Small" OnRowDataBound="GridView1_RowDataBound" OnRowCommand="GridView1_RowCommand" AllowPaging="True" OnPageIndexChanging="GridView1_PageIndexChanging" PageSize="15">
<Columns>
<asp:BoundField DataField="Number" HeaderText="房间编号" />
<asp:BoundField DataField="BedNumber" HeaderText="床位数" />
<asp:BoundField DataField="Description" HeaderText="房间描述" />
<asp:BoundField DataField="StateName" HeaderText="房间状态" />
<asp:BoundField DataField="GuestNumber" HeaderText="入住人数" />
<asp:BoundField DataField="TypeName" HeaderText="房间类型" />
<asp:TemplateField HeaderText="修改">
<ItemTemplate>
<asp:ImageButton ID="ImageButton2" runat="server" ImageUrl="image/edit.gif" CommandName="Ed" CommandArgument=<%#Eval("RoomId") %>>
</asp:ImageButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="删除">
<ItemTemplate>
<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="image/delete.gif" CommandName="De" CommandArgument=<%#Eval("RoomId") %>>
</asp:ImageButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
后台这样:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
int i;
//执行循环,保证每条数据都可以更新
for (i = 0; i < GridView1.Rows.Count; i++)
{
//首先判断是否是数据行
if (e.Row.RowType == DataControlRowType.DataRow)
{
//当鼠标停留时更改背景色
e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='#A5C5DC'");
//当鼠标移开时还原背景色
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=c");
ImageButton imgbtn = (ImageButton)e.Row.FindControl("ImageButton1");
imgbtn.Attributes.Add("onclick","return confirm('您确认要删除吗?');");
}
}
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
string cmd = e.CommandName;
int roomId = Convert.ToInt32(e.CommandArgument);
if (cmd == "De")
{
RoomManager.DeleteRoomByRoomId(roomId);
}
else if(cmd=="Ed")
{
Page.Server.Transfer("UpdateRooms.aspx?RoomId=" + roomId.ToString());
}
binddate();
}
要写一个删除的方法用来调用。
你试试吧,我的的确可以。
展开全部
<asp:TemplateField HeaderText="删除" >
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="false" OnClientClick="return confirm('确认删除这条新闻吗!')" CommandName="Delete" Text="删除" ></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
---------------------------------------------后台
//单行删除
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
//获取你要删除那一行绑定的ID,前提是你GridView1的属性DataKeyNames要绑定表的主键列
int serial = int.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString());
//把获取的那一行的ID作为参数传给删除的方法就能做单条删除了
CompanyNewsManager.DeleteCompanyNewss(serial);
lblInfo.Text = "删除成功!";
}
照着我的改绝对能删
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="false" OnClientClick="return confirm('确认删除这条新闻吗!')" CommandName="Delete" Text="删除" ></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
---------------------------------------------后台
//单行删除
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
//获取你要删除那一行绑定的ID,前提是你GridView1的属性DataKeyNames要绑定表的主键列
int serial = int.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString());
//把获取的那一行的ID作为参数传给删除的方法就能做单条删除了
CompanyNewsManager.DeleteCompanyNewss(serial);
lblInfo.Text = "删除成功!";
}
照着我的改绝对能删
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先将list存在Session中是个不好的写法;
其次,逻辑类里删的是list重的数据,而不是Gv中的数据吧
第三,你取得categoryID,是Gv的行号,而不是List的数据..
总之就是把简单东西写复杂了....
其次,逻辑类里删的是list重的数据,而不是Gv中的数据吧
第三,你取得categoryID,是Gv的行号,而不是List的数据..
总之就是把简单东西写复杂了....
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询