关键字: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
以下内容为程序代码:
出自: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> |