为什么我的DataGrid删除就不能正常删除呢?下面是我的前台代码:
<%@ Page language="c#" Codebehind="Admin_NewsModify.aspx.cs" AutoEventWireup="false" Inherits="cpAdExtend.Admin.Admin_NewsModify" %>
<%@ Register TagPrefix="ftb" Namespace="FreeTextBoxControls" Assembly="FreeTextBox" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>Admin_NewsModify</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<LINK href="../Css/style.css" type="text/css" rel="stylesheet">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:label id="Label1" style="Z-INDEX: 101; LEFT: 464px; POSITION: absolute; TOP: 48px" runat="server"
Width="64px">新闻管理</asp:label><asp:datagrid id="DataGrid1" style="Z-INDEX: 102; LEFT: 176px; POSITION: absolute; TOP: 80px"
runat="server" Width="688px" BorderColor="#3366CC" BorderStyle="None" BorderWidth="1px" BackColor="White" CellPadding="4" AutoGenerateColumns="False"
Height="232px" AllowPaging="True">
<SelectedItemStyle Font-Bold="True" ForeColor="#CCFF99" BackColor="#009999"></SelectedItemStyle>
<ItemStyle ForeColor="#003399" BackColor="White"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="#CCCCFF" BackColor="#003399"></HeaderStyle>
<FooterStyle ForeColor="#003399" BackColor="#99CCCC"></FooterStyle>
<Columns>
<asp:BoundColumn DataField="ID" ReadOnly="True" HeaderText="序号"></asp:BoundColumn>
<asp:BoundColumn DataField="Title" HeaderText="新闻标题"></asp:BoundColumn>
<asp:BoundColumn DataField="Content" HeaderText="新闻内容"></asp:BoundColumn>
<asp:BoundColumn DataField="Click" HeaderText="浏览次数"></asp:BoundColumn>
<asp:BoundColumn DataField="AddTime" HeaderText="添加时间"></asp:BoundColumn>
<asp:HyperLinkColumn Text="修改" DataNavigateUrlField="ID" DataNavigateUrlFormatString="Admin_NewsExit.aspx?ID={0}"
HeaderText="修改新闻">
<ItemStyle VerticalAlign="Middle"></ItemStyle>
</asp:HyperLinkColumn>
<asp:TemplateColumn HeaderText="删除">
<ItemTemplate>
<asp:Button id="btnDelete" runat="server" CommandName="UserDelete" Text="删除"></asp:Button>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle HorizontalAlign="Left" ForeColor="#003399" BackColor="#99CCCC" Mode="NumericPages"></PagerStyle>
</asp:datagrid></FONT></form>
</body>
</HTML>
后台代码如下:using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using AdExtend.Model; 
using AdExtend.SQLServerDAL;
namespace cpAdExtend.Admin
{
/// <summary>
/// Admin_NewsModify 的摘要说明。
/// </summary>
public class Admin_NewsModify : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected System.Web.UI.WebControls.Label Label1;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面

if(!IsPostBack)
dataBind();
} private void dataBind()
{
string sql="select * from News";
SqlConnection conn=new SqlConnection(SQLHelper.connStr);
SqlDataAdapter sda=new SqlDataAdapter(sql,conn);
DataSet ds=new DataSet();
sda.Fill(ds,"news");
DataView dv=ds.Tables["news"].DefaultView;
DataGrid1.DataSource=dv;
DataGrid1.DataBind();
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{    
this.DataGrid1.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_ItemCommand);
this.DataGrid1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);
this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DataGrid1.CurrentPageIndex=e.NewPageIndex;
dataBind();
} private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
switch(e.Item.ItemType)
{
case ListItemType.Item:
case ListItemType.AlternatingItem:
case ListItemType.EditItem:
{
Button btn = (Button)e.Item.FindControl("btnDelete");
btn.Attributes.Add("onclick", "return confirm('你确定删除这条记录吗?');");
break;
}
} } private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName == "Delete")
{
this.DeleteRow(this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString());
}
} private void DeleteRow(string i)
{
SqlConnection conn=new SqlConnection(SQLHelper.connStr);
SqlCommand cmd = new SqlCommand("DELETE FROM News WHERE (ID = "+i+")",conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}

}
}
请各位帮忙看看,谢谢大家了!

解决方案 »

  1.   

    为什么不直接用这个事件呢DataGrid1_DeleteCommand.还要另外写..有些麻烦...
      

  2.   

    <asp:ButtonColumn Text="&lt;div id=&quot;de&quot; onclick=&quot;JavaScript:return confirm('确定删除吗?')&quot;&gt;删除&lt;/div&gt;"
                                    CommandName="UserDelete">复制这个试试!代替原来的。
      

  3.   

    刚才改了个地方“Delete”改为“UserDelete”
    结果出现了:
    if(e.CommandName == "UserDelete")
    行 96:  {
    行 97:  this.DeleteRow(this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString());
    行 98:  } 这样的错误?
    不理解!
      

  4.   

    DataGrid控件中DataKeyField属性你邦定字段了吗?