Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand注意 Handles !
测试代码: .aspx <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication24.WebForm1" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML> <HEAD> <title>WebForm1</title> <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0"> <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: 175px; POSITION: absolute; TOP: 78px" runat="server" Width="408px" Height="269px"> <Columns> <asp:TemplateColumn HeaderText="编辑"> <ItemTemplate> <asp:Button id="Button1" runat="server" Width="45px" Text="编辑" CommandName="Item"></asp:Button> </ItemTemplate> </asp:TemplateColumn> </Columns> </asp:DataGrid></FONT> </form> </body> </HTML>.cs ................ public class WebForm1 : System.Web.UI.Page { protected System.Web.UI.WebControls.DataGrid DataGrid1; private System.Data.SqlClient.SqlConnection myConn; private System.Data.SqlClient.SqlCommand myComm; private System.Data.SqlClient.SqlDataAdapter myAd; private System.Data.DataSet myDs; private void Page_Load(object sender, System.EventArgs e) { this.myConn=new SqlConnection("server=192.168.1.170\\test;user id=sa;database=test"); this.myConn.Open(); this.myAd=new SqlDataAdapter("select * from test",this.myConn); this.myDs=new DataSet(); this.myAd.Fill(this.myDs,"test"); this.DataGrid1.DataSource=this.myDs.Tables["test"].DefaultView; this.DataGrid1.DataBind(); } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); base.OnInit(e); }
/// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.DataGrid1.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_ItemCommand); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { Response.Write("dddddddddddddddddd"); } } }
.aspx
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication24.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<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: 175px; POSITION: absolute; TOP: 78px" runat="server" Width="408px" Height="269px">
<Columns>
<asp:TemplateColumn HeaderText="编辑">
<ItemTemplate>
<asp:Button id="Button1" runat="server" Width="45px" Text="编辑" CommandName="Item"></asp:Button>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid></FONT>
</form>
</body>
</HTML>.cs
................ public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;
private System.Data.SqlClient.SqlConnection myConn;
private System.Data.SqlClient.SqlCommand myComm;
private System.Data.SqlClient.SqlDataAdapter myAd;
private System.Data.DataSet myDs; private void Page_Load(object sender, System.EventArgs e)
{
this.myConn=new SqlConnection("server=192.168.1.170\\test;user id=sa;database=test");
this.myConn.Open();
this.myAd=new SqlDataAdapter("select * from test",this.myConn);
this.myDs=new DataSet();
this.myAd.Fill(this.myDs,"test");
this.DataGrid1.DataSource=this.myDs.Tables["test"].DefaultView;
this.DataGrid1.DataBind();
} #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.DataGrid1.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_ItemCommand);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
Response.Write("dddddddddddddddddd");
}
}
}
{
Response.Write("dddddddddddddddddd");
}
本来是:
private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if (e.CommandName=="Item"){
Response.Write("dddddddddddddddddd");
}
}
我把IF 去掉也不行呀!!!!!??
多谢!
<asp:ButtonColumn HeaderText="选取" Text="选取" CommandName="DS"></asp:ButtonColumn>
(2)如果要使用你那种方式,就要AutoGenerateColumns=Fasle,并对每一个字段进行绑定
如:
<Columns>
<asp:TemplateColumn HeaderText="编辑">
<ItemTemplate>
<asp:Button id="Button1" runat="server" Width="45px" Text="编辑" CommandName="Item"></asp:Button>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="姓名" HeaderText="姓名" > </asp:BoundColumn>
<asp:BoundColumn DataField="职务" HeaderText="职务" > </asp:BoundColumn>
</Columns>
<asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 175px; POSITION: absolute; TOP: 78px" runat="server" Width="408px" Height="269px" AutoGenerateColumns="False">
<Columns>
<asp:TemplateColumn HeaderText="编辑">
<ItemTemplate>
<asp:Button id="Button1" runat="server" Width="45px" Text="编辑" CommandName="Item"></asp:Button>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="name" HeaderText="姓名"></asp:BoundColumn>
<asp:BoundColumn DataField="age" HeaderText="年龄"></asp:BoundColumn>
<asp:BoundColumn DataField="high" HeaderText="身高"></asp:BoundColumn>
</Columns>
</asp:DataGrid>
怎么还不行呀?
确认你的事件是否真正触发了吗?
if(!IsPostBack)
{
Your Code;
}
如果不判断是否是PostBack,那么每一次刷新页面都会调用一次Page_Load事件,那么就会重新绑定数据,这时DataGrid就不会响应任何事件。