用GridView做一个简单的带提示的删除!

lw670137996 2012-09-15 11:26:14
老师让我们做个带提示的删除功能,可是我试了好多参考的方法,都不行,想来请教各位前辈下:

<table class="style1">
<tr>
<td align="left" height="80">
当前位置>商品浏览                                          
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="查询" />
</td>
</tr>
<tr>
<td>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
CellPadding="4" ForeColor="#333333" GridLines="None"
style="position: relative; top: -43px; left: 3px; width: 543px"
AllowPaging="True" DataSourceID="SqlDataSource1"
onrowdeleting="GridView1_RowDeleting" onrowcreated="GridView1_RowCreated">
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<Columns>
<asp:BoundField HeaderText="商品编号" DataField="goods_id" />
<asp:BoundField HeaderText="商品类别" DataField="category_Name" />
<asp:BoundField HeaderText="商品名称" DataField="goods_name" />
<asp:BoundField HeaderText="单价" DataField="goods_price" />
<asp:TemplateField HeaderText="相关操作">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server">修改</asp:LinkButton>
 
<asp:LinkButton ID="LinkButton2" runat="server"
CommandArgument='<%# Eval("goods_id") %>' CommandName="delete"
onclientclick="return confirm('确定要删除吗?')">删除</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#999999" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:goodsDBConnectionString %>"


SelectCommand="SELECT T_goodsInfo.goods_id, T_category.category_Name, T_goodsInfo.goods_name, T_goodsInfo.goods_price FROM T_category INNER JOIN T_goodsInfo ON T_category.category_ID = T_goodsInfo.category_id">
</asp:SqlDataSource>
</td>
</tr>
</table>


CSDN好像不可以上传图片,我把截图都放在:临时 的相册里的:http://user.qzone.qq.com/1083490436/infocenter#!app=4&via=QZ.HashRefresh


谢谢各位大大了啊
...全文
114 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lw670137996 2012-09-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
你的
<asp:GridView ID="GridView1" runat="server" 都没有设置DataKeyNamse属性,后台是不能使用
GridView1.DataKeys[e.RowIndex].Value;得到的,你必须设置
<asp:GridView ID="GridView1" runat="server" DataKeyNamse="goods_id"
[/Quote]

谢谢各位大大啦,用了断点查了,添加DataKeyNamse为:goods_id后就没索引错误啦!现在已近可以了!
孟子E章 2012-09-15
  • 打赏
  • 举报
回复
<asp:LinkButton ID="LinkButton2" runat="server"
CommandArgument='<%# Eval("goods_id") %>' CommandName="delete"
onclientclick="return confirm('确定要删除吗?')">删除</asp:LinkButton>

要写成
<asp:LinkButton ID="LinkButton2" runat="server"
CommandArgument='<%# Eval("goods_id") %>' CommandName="delete"
onclientclick="if(!confirm('确定要删除吗?')){return false;}">删除</asp:LinkButton>
pengxiaoshuang0 2012-09-15
  • 打赏
  • 举报
回复

<span onclick="return confirm('你确认删除吗')">删除</span>

放在删除那个地方
孟子E章 2012-09-15
  • 打赏
  • 举报
回复
你的
<asp:GridView ID="GridView1" runat="server" 都没有设置DataKeyNamse属性,后台是不能使用
GridView1.DataKeys[e.RowIndex].Value;得到的,你必须设置
<asp:GridView ID="GridView1" runat="server" DataKeyNamse="goods_id"
孟子E章 2012-09-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

<asp:LinkButton ID="LinkButton2" runat="server"
CommandArgument='<%# Eval("goods_id") %>' CommandName="delete"
onclientclick="return confirm('确定要删除吗?')">删除</asp:LinkButton>
这样写是可以的
[/Quote]

你试试没试试啊?
dielianxian 2012-09-15
  • 打赏
  • 举报
回复
<asp:TemplateField HeaderText="操作">
<ItemTemplate>
<asp:ImageButton ID="ImageButton2" runat="server" ImageUrl="~/admin/images/icons/cross.png" AlternateText="删除" CausesValidation="false" CommandName="delete" OnClientClick="return confirm('确定要删除吗')"/>
</ItemTemplate>
</asp:TemplateField>

这是我的代码 代码和楼主一样 我的程序运行 可以正常弹出是否删除的提示框 楼主看下是不是其他地方的错误
w87875251l 2012-09-15
  • 打赏
  • 举报
回复
<asp:LinkButton ID="LinkButton2" runat="server"
CommandArgument='<%# Eval("goods_id") %>' CommandName="delete"
onclientclick="return confirm('确定要删除吗?')">删除</asp:LinkButton>
这样写是可以的
w87875251l 2012-09-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

<asp:LinkButton ID="LinkButton2" runat="server"
CommandArgument='<%# Eval("goods_id") %>' CommandName="delete"
onclientclic……
[/Quote]
我感觉没这个必要
鸿与黑 2012-09-15
  • 打赏
  • 举报
回复
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButtonDelete" runat="server" CausesValidation="False" CommandName="Delete" OnClientClick="javascript:return confirm('确认要删除么?');" Text="删除" CssClass="cmdField"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
lw670137996 2012-09-15
  • 打赏
  • 举报
回复
我的后台是:


protected void Page_Load(object sender, EventArgs e)
{

if (!IsPostBack)
{

string sql = "SELECT T_goodsInfo.goods_id, T_category.category_Name, T_goodsInfo.goods_name, T_goodsInfo.goods_price FROM T_category INNER JOIN T_goodsInfo ON T_category.category_ID = T_goodsInfo.category_id ";
getAllQuestion(sql);
}

}

private void getAllQuestion(string sql)
{
DataSet dataset = new DataSet();


dataset = GetDataSet(sql);
DataTable dt = new DataTable();
dt = dataset.Tables[0];
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}

private DataSet GetDataSet(string sql)
{
string connstr = ConfigurationManager.AppSettings["connectionString"];
SqlConnection con = new SqlConnection(connstr);

con.Open();
SqlDataAdapter adapter = new SqlDataAdapter(sql, con);
DataSet dataset = new DataSet();
adapter.Fill(dataset);
con.Close();
return dataset;
}

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{


string connstr = ConfigurationManager.AppSettings["connectionString"];
SqlConnection con = new SqlConnection(connstr);

con.Open();
string sql = "DELETE From T_goodsInfo WHERE goods_id=" + GridView1.DataKeys[e.RowIndex].Value;
Response.Write(sql);
SqlCommand cmd = new SqlCommand(sql, con);
cmd.ExecuteNonQuery();
con.Close();
GridView1.DataBind();

}


在提示框确定有提示:

索引超出范围。必须为非负值并小于集合大小。
参数名: index

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index


源错误:


行 74:
行 75: con.Open();
行 76: string sql = "DELETE From T_goodsInfo WHERE goods_id=" + GridView1.DataKeys[e.RowIndex].Value;
行 77: Response.Write(sql);
行 78: SqlCommand cmd = new SqlCommand(sql, con);

62,072

社区成员

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

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

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

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