关键字:DataGrid、选择整行

出自:http://www.aspx.cn/comm/dotnetbbs/Showtopic.aspx?Forum_ID=5&Id=53678&PPage=1

摘要:今天在MSN上有朋友询问点击DataGrid中任一cells而选择一行的事,这个以前在CSDN上就有看到,我在这里也就简单的写个例子给大家参考一下。

这个例子是点击任何一个,将回发,对一行进行编辑,而不用专门去点击[编辑]

[webform1.aspx.cs

[code]
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;

namespace Sample
{
   /// <summary>
   /// WebForm1 的摘要说明。
   /// </summary>
   public class WebForm1 : System.Web.UI.Page
   {
      protected System.Web.UI.WebControls.Button Button1;
      protected System.Web.UI.WebControls.DataGrid DataGrid1;
   
      private void Page_Load(object sender, System.EventArgs e)
      {
         
         this.Bind();// 在此处放置用户代码以初始化页面
      }

      #region Web 窗体设计器生成的代码
      override protected void OnInit(EventArgs e)
      {
         //
         // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
         //
         InitializeComponent();
         base.OnInit(e);
      }
      
      /// <summary>
      /// 设计器支持所需的方法 - 不要使用代码编辑器修改
      /// 此方法的内容。
      /// </summary>
      private void InitializeComponent()
      {    
         
         this.DataGrid1.ItemDataBound+=new DataGridItemEventHandler(DataGrid1_ItemDataBound);
         this.Load += new System.EventHandler(this.Page_Load);
         this.DataGrid1.EditCommand+=new DataGridCommandEventHandler(DataGrid1_EditCommand);

         this.DataGrid1.CancelCommand +=new DataGridCommandEventHandler(DataGrid1_CancelCommand);
      }
      #endregion

   


      private void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
      {
         if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem )
         {
            e.Item.Attributes.Add("onclick",Page.GetPostBackClientEvent(e.Item.Cells[1].Controls[0],""));

         }

      }


      private void Bind()
      {
         
         SqlConnection Cn = new SqlConnection("server=(local);DataBase=pubs;uid=sa;pwd=");

         SqlDataAdapter SqlDa = new SqlDataAdapter("SELECT * FROM jobs",Cn);

         DataSet ds = new DataSet();

         SqlDa.Fill(ds);

         this.DataGrid1.DataSource = ds;
         this.DataGrid1.DataBind();


      }
      

      private void DataGrid1_EditCommand(object source, DataGridCommandEventArgs e)
      {
         this.DataGrid1.EditItemIndex = e.Item.ItemIndex;

         this.Bind();

      }

      private void DataGrid1_CancelCommand(object source, DataGridCommandEventArgs e)
      {
         this.DataGrid1.EditItemIndex = -1;
         this.Bind();
      }

   
   }
}
[/code]

webform1.aspx

以下内容为程序代码:

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" 
Inherits="Sample.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
   <HEAD>
      <title>WebForm1</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>
      <form id="Form1" method="post" runat="server">
          
         <div id="tt">
            <asp:DataGrid id="DataGrid1" runat="server">
               <Columns>
                  <asp:ButtonColumn Text="选择" CommandName="Select"></asp:ButtonColumn>
                  <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
               </Columns>
            </asp:DataGrid>
            <asp:Button id="Button1" runat="server" Text="Button"></asp:Button>
         </div>
      </form>
   </body>
</HTML>
posted on 2005-09-22 22:01  VortexDragon(旋风龙)  阅读(277)  评论(0编辑  收藏  举报