Paste your UI code,first!

解决方案 »

  1.   

    Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand注意 Handles !
      

  2.   

    测试代码:
    .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");
    }
    }
    }
      

  3.   

    private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    Response.Write("dddddddddddddddddd");
    }
    本来是:
    private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    if (e.CommandName=="Item"){
    Response.Write("dddddddddddddddddd");
    }
    }
    我把IF 去掉也不行呀!!!!!??
    多谢!
      

  4.   

    你这样是不行的,你的DATAGRID的是动态绑定的,既AutoGenerateColumns=True,因此在这种方式下只能使用GRID本身的ButtonColumn,如下:
    <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>
      

  5.   

    我把AutoGenerateColumns=Fasle并且:
    <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>
    怎么还不行呀?
      

  6.   

    May it not be used in the codebehind, the "response.write()" method?
      

  7.   

    我已经这样做了很多例子;如果你的还有问题,建议你先试一下<asp:ButtonColumn HeaderText="选取" Text="选取" CommandName="DS"></asp:ButtonColumn>是否能相应此事件?
    确认你的事件是否真正触发了吗?
      

  8.   

    "response.write()" in the codebehind----- http://www.csdn.net/expert/topic/674/674195.xml?temp=.6580774
      

  9.   

    请在Page_Load事件中加上
    if(!IsPostBack)
    {
    Your Code;
    }
    如果不判断是否是PostBack,那么每一次刷新页面都会调用一次Page_Load事件,那么就会重新绑定数据,这时DataGrid就不会响应任何事件。
      

  10.   

    多谢个位,搞定了,就是jerryfangsh(傻瓜)说的原因!!为什么“重新绑定数据”就不会响应事件了呢???多谢,谁在北京,答出来,请吃饭!:)