我在DataGrid 里用了一個模板列,里面放一個按鈕--Select,希望在點選鈕時得到key值,給它的事件是SelectIndexChange事件.但結果是執行這個按鈕事件無效,也就是并未運行到這個事件中.為什么?

解决方案 »

  1.   

    第一段是FOME里的HTML代碼.
    <form id="Form1" method="post" runat="server">
    <asp:TextBox ID="txt" Runat="server" />
    <asp:DataGrid id="dg" DataKeyField="u" style="Z-INDEX: 101; LEFT: 96px; POSITION: absolute; TOP: 64px"
    runat="server">
    <Columns>
    <asp:TemplateColumn HeaderText="SelectToo">
    <ItemTemplate>
    <asp:Button id="BTN" runat="server" CommandName="Delete" Text="Button"></asp:Button>
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:ButtonColumn Text="選取" HeaderText="Select" CommandName="Select"></asp:ButtonColumn>
    </Columns>
    </asp:DataGrid>
    </form>
    這是P事件代碼:
    private void Page_Load(object sender, System.EventArgs e)
    {
    SqlConnection con=new SqlConnection("server=.;uid=sa;database=pubs");
    SqlDataAdapter cmd=new SqlDataAdapter("select * from uuuu",con);
    DataSet ds=new DataSet();
    cmd.Fill(ds,"uuuu");
    dg.DataSource=ds.Tables[0];
    dg.DataBind();
    // Response.Write(Session["key"].ToString());
    } #region Web Form 設計工具產生的程式碼
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 此為 ASP.NET Web Form 設計工具所需的呼叫。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 此為設計工具支援所必須的方法 - 請勿使用程式碼編輯器修改
    /// 這個方法的內容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.dg.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.dg_DeleteCommand);
    this.dg.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.dg_DeleteCommand);
    this.dg.SelectedIndexChanged += new System.EventHandler(this.dg_SelectedIndexChanged);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void dg_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    string sid=dg.DataKeys[e.Item.ItemIndex].ToString();
    txt.Text=sid;
    }
    如下代碼,我就是將它注釋,一樣能得到那個值.
    private void dg_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    // string sid=dg.DataKeys[dg.SelectedIndex].ToString();
    // txt.Text=sid+"a";
    }
      

  2.   

    Page load  事件应该判断是否为回发!