netInfo

学习的最好方式就是写下来,不积跬步,无以致千里

博客园 首页 新随笔 联系 订阅 管理

DataGrid 在做删除时,我们都会给用户一个友好的提示,你是否要删除这条记录,为了实现这个功能,我们必须在DataGrid1_ItemCreated事件中写一段代码来处理。

现在我们将这个功能封装一下,加强这个功能。

打开vs2003,新建C#webform 的工程。然后再添加一个类库工程。

类库代码如下

using System;

using System.Data;

using System.Web.UI;

using System.Web.UI.WebControls;

 

//功能:一个简单的组件(删除记录时弹出提示)

//时间:2005-02-17

//作者:

namespace ClassDataGrid

{

     /// <summary>

     /// Class1 的摘要说明。

     /// </summary>

     //DataGrid中继承

     public class DelDataGrid : DataGrid

     {

//这个是是否删除的标志

         private bool AllowDelFlag;

         public DelDataGrid()

         {

              //

              // TODO: 在此处添加构造函数逻辑

              //

              AllowDelFlag=false;

              ItemCreated+=new DataGridItemEventHandler(OnItemCreated);

         }

         //定义一个属性

         public bool DelMessage

         {

              get

              {

                   return AllowDelFlag;

              }

              set

              {

                   AllowDelFlag=value;   

              }

         }

         //这个事件中处理删除信息

         private void OnItemCreated(Object sender,DataGridItemEventArgs e)

         {

              ListItemType itemType=e.Item.ItemType;

              //如果AllowDelFlagtrue,才能够删除。

              if ((itemType==ListItemType.Item || itemType==ListItemType.AlternatingItem) && AllowDelFlag)

              {

                   LinkButton myDeleteButton=new LinkButton();

                   //这里会在表单中找一个名称为mydeletebuttonLinkButton

                   myDeleteButton = (LinkButton)e.Item.FindControl("mydeletebutton");

                   myDeleteButton.Attributes.Add("onclick", "return confirm('您真的要删除第 " + (e.Item.ItemIndex+1).ToString() + " 行吗?')");

              }

         }

     }

}

OK,编译成DLl,Asp.Net工程中,新建表单,添加这个.net组件,会看到一个DataGrid控件,在右边的属性框中看到有DelMessage属性,默认值为false.看代码

工程代码:

Webform1.aspx

<%@ Register TagPrefix="cc1" Namespace="ClassDataGrid" Assembly="ClassDataGrid" %>

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="northwind.WebForm1" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<HTML>

     <HEAD>

         <title>WebForm2</title>

         <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">

         <meta content="C#" name="CODE_LANGUAGE">

         <meta content="JavaScript" name="vs_defaultClientScript">

         <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">

     </HEAD>

     <body MS_POSITIONING="GridLayout">

         <form id="Form1" method="post" runat="server">

              <cc1:deldatagrid id="DelDataGrid1" style="Z-INDEX: 101; LEFT: 32px; POSITION: absolute; TOP: 8px"

                   runat="server" DelDataGridMessage="true" AutoGenerateColumns="False" AllowPaging="True" CellPadding="4"

                   BackColor="White" BorderWidth="1px" BorderStyle="None" BorderColor="#CC9966" DataKeyField="employeeid"

                   Height="336px" Width="296px" DelMessage="True">//这里设为true,则删除时候有提示

                   <SelectedItemStyle Font-Bold="True" ForeColor="#663399" BackColor="#FFCC66"></SelectedItemStyle>

                   <ItemStyle ForeColor="#330099" BackColor="White"></ItemStyle>

                   <HeaderStyle Font-Bold="True" ForeColor="#FFFFCC" BackColor="#990000"></HeaderStyle>

                   <FooterStyle ForeColor="#330099" BackColor="#FFFFCC"></FooterStyle>

                   <Columns>

                       <asp:BoundColumn DataField="firstname" HeaderText="firstname">

                            <HeaderStyle HorizontalAlign="Center"></HeaderStyle>

                       </asp:BoundColumn>

                       <asp:BoundColumn DataField="lastname" HeaderText="lastname">

                            <HeaderStyle HorizontalAlign="Center"></HeaderStyle>

                       </asp:BoundColumn>

                       <asp:TemplateColumn>

                            <ItemTemplate>

                                 <asp:LinkButton id="mydeletebutton" runat="server" Text="删除" CommandName="Delete" CausesValidation="false"></asp:LinkButton>

                            </ItemTemplate>

                       </asp:TemplateColumn>

                   </Columns>

                   <PagerStyle HorizontalAlign="Right" ForeColor="#330099" BackColor="#FFFFCC" Mode="NumericPages"></PagerStyle>

              </cc1:deldatagrid></form>

     </body>

</HTML>

 

Webform1.aspx.cs文件

 

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;

using System.Configuration ;

 

 

namespace northwind

{

     /// <summary>

     /// WebForm2 的摘要说明。

     /// </summary>

     public class WebForm2 : System.Web.UI.Page

     {

         protected System.Web.UI.WebControls.LinkButton mydeletebutton;

         protected ClassDataGrid.DelDataGrid DelDataGrid1;

         static readonly String sqlConnectionString=ConfigurationSettings.AppSettings["SQLConnString"];

    

         private void Page_Load(object sender, System.EventArgs e)

         {

              // 在此处放置用户代码以初始化页面

              if (!Page.IsPostBack)

              {

                   BindGrid();

              }

         }

 

         private void BindGrid()

         {

             

              SqlConnection myconnection =new SqlConnection(sqlConnectionString) ;

              myconnection.Open ();

              SqlDataAdapter da=new SqlDataAdapter("select * from employees" ,myconnection) ;

              DataSet ds=new DataSet() ;

              da.Fill (ds,"employees");

              this.DelDataGrid1.DataSource=ds.Tables["employees"].DefaultView; 

              this.DelDataGrid1.DataBind();

         }

 

         public void DelDataGrid1_DeleteCommand(Object sender, DataGridCommandEventArgs e)

         {

              //这里自己处理删除的操作

         }

     }

}

 

DelMessage属性为false的时候,删除数据不会有任何提示

DelMessage属性为true的时候,删除数据会出现提示。

posted on 2005-02-21 00:11  边城浪子  阅读(483)  评论(0编辑  收藏  举报