数据绑定后可以把数据显示出来,但是在点击"删除"键后,下面的grdTest_ItemDataBound事件却不执行,不知道是什么原因!
1.html代码:
<%@ Page language="c#" Codebehind="DataGrid_DeleteItem.aspx.cs" AutoEventWireup="false" Inherits="test.DataGrid_DeleteItem" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>DataGrid_DeleteItem</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 344px; POSITION: absolute; TOP: 136px"
runat="server" AutoGenerateColumns="False" Width="216px" Height="56px">
<Columns>
<asp:BoundColumn DataField="id" HeaderText="ID"></asp:BoundColumn>
<asp:TemplateColumn>
<ItemTemplate>
<asp:Button id="btnDelete" runat="server" Text="删除" CommandName="Delete"></asp:Button>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid></FONT>
</form>
</body>
</HTML>
2.cs文件代码
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
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 System.Data.SqlClient;
using System.Configuration;
namespace test
{
/// <summary>
/// DataGrid_DeleteItem 的摘要说明。
/// </summary>
public class DataGrid_DeleteItem : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;
Data Data=new Data();
DataSet ds=new DataSet(); SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"].ToString());
      private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!this.IsPostBack){


SqlDataAdapter myAdapter = new SqlDataAdapter("SELECT ID,title FROM article order by id desc",myConnection);
myAdapter.Fill(ds);
this.DataGrid1.DataSource = ds.Tables[0].DefaultView;
this.DataGrid1.DataKeyField = "ID";
this.DataGrid1.DataBind();
        }
}
private void grdTest_ItemDataBound(object sender,System.Web.UI.WebControls.DataGridItemEventArgs e) 
{
            Response.Write("执行了的");
switch(e.Item.ItemType)
{
case ListItemType.Item:
case ListItemType.AlternatingItem:
case ListItemType.EditItem:
{
Button btn = (Button)e.Item.FindControl("btnDelete");

btn.Attributes.Add("onclick", "javascript:confirm('你是否确定删除这条记录');");
break;
}
}
// if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
 //{ 
//  Button btn = (Button)e.Item.FindControl("btnDelete");
//  btn.Attributes.Add("onclick","javascript:return confirm('是否删除?');");  //  } 
} private void grdTest_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)
{
string strConnection = ConfigurationSettings.AppSettings["sa"].ToString ();
SqlConnection myConnection = new SqlConnection(strConnection);
SqlCommand cmd = new SqlCommand("DELETE FROM article WHERE (id = "+i+")",myConnection);
myConnection.Open();
cmd.ExecuteNonQuery();
myConnection.Close();
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{    
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
}
}

解决方案 »

  1.   

    没有给事件绑定。
    在InitializeComponent()中绑定grdTest_ItemCommand()这个事件
      

  2.   

    private void InitializeComponent()
    {    
    this.Load += new System.EventHandler(this.Page_Load);
        //添加事件
    }
    #endregion
    }
    }
      

  3.   

    但是在点击"删除"键后,下面的grdTest_ItemDataBound事件却不执行
    ==========
    似乎应该是 ItemCommand 事件哦
    private void InitializeComponent()

    this.Load += new System.EventHandler(this.Page_Load);
    // here 
    this.DataGrid1 += new System.DataGridItemEventHandler(this.grdTest_ItemCommand);
    }