自娱自乐

本人收藏的一些文章,供学习使用
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  1<%@ Page language="c#" Codebehind="datagrid_a.aspx.cs" AutoEventWireup="false" Inherits="databind.datagrid_a" %>
  2<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
  3<HTML>
  4    <HEAD>
  5        <title>datagrid_a</title>
  6        <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
  7        <meta content="C#" name="CODE_LANGUAGE">
  8        <meta content="JavaScript" name="vs_defaultClientScript">
  9        <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
 10    </HEAD>
 11    <body MS_POSITIONING="GridLayout">
 12        <form id="Form1" method="post" runat="server">
 13            <asp:datagrid id="dg" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 72px" runat="server"
 14                AutoGenerateColumns="False" PageSize="3" AllowPaging="True" BorderColor="#CCCCCC" BorderWidth="1px"
 15                Width="912px" ShowFooter="True" BorderStyle="None" BackColor="White" CellPadding="4" GridLines="Horizontal"
 16                ForeColor="Black">
 17                <SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#CC3333"></SelectedItemStyle>
 18                <HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#333333"></HeaderStyle>
 19                <FooterStyle ForeColor="Black" BackColor="#CCCC99"></FooterStyle>
 20                <Columns>
 21                    <asp:BoundColumn DataField="id" SortExpression="id" HeaderText="ID"></asp:BoundColumn>
 22                    <asp:BoundColumn DataField="name" HeaderText="名字"></asp:BoundColumn>
 23                    <asp:BoundColumn DataField="sex" SortExpression="sex" HeaderText="原始sex"></asp:BoundColumn>
 24                    <asp:TemplateColumn HeaderText="修改后sex">
 25                        <ItemTemplate>
 26                            <FONT face="宋体">
 27                                <asp:RadioButton id=RadioButton1 runat="server" Checked='<%# DataBinder.Eval(Container,"DataItem.sex") %>' GroupName="sex" Text="男" Enabled="False">
 28                                </asp:RadioButton>
 29                                <asp:RadioButton id=RadioButton2 runat="server" Checked='<%# !(bool)DataBinder.Eval(Container,"DataItem.sex") %>' GroupName="sex" Text="女" Enabled="False">
 30                                </asp:RadioButton></FONT>
 31                        </ItemTemplate>
 32                        <EditItemTemplate>
 33                            <FONT face="宋体">
 34                                <asp:RadioButton id="RadioButton3" runat="server" Checked='<%# DataBinder.Eval(Container,"DataItem.sex") %>' GroupName="sex" Text="男">
 35                                </asp:RadioButton>
 36                                <asp:RadioButton id="RadioButton4" runat="server" Checked='<%# !(bool)DataBinder.Eval(Container,"DataItem.sex") %>' GroupName="sex" Text="女">
 37                                </asp:RadioButton></FONT>
 38                        </EditItemTemplate>
 39                    </asp:TemplateColumn>
 40                    <asp:TemplateColumn HeaderText="自定义性别">
 41                        <HeaderTemplate>
 42                            <FONT face="宋体">
 43                                <asp:Label id="Label2" runat="server">性别</asp:Label></FONT>
 44                        </HeaderTemplate>
 45                        <ItemTemplate>
 46                            <FONT face="宋体">
 47                                <asp:DropDownList id="sex" runat="server" Enabled="False">
 48                                    <asp:ListItem Value="True"></asp:ListItem>
 49                                    <asp:ListItem Value="False"></asp:ListItem>
 50                                </asp:DropDownList></FONT>
 51                        </ItemTemplate>
 52                        <EditItemTemplate>
 53                            <asp:DropDownList id="sex1" runat="server">
 54                                <asp:ListItem Value="True"></asp:ListItem>
 55                                <asp:ListItem Value="False"></asp:ListItem>
 56                            </asp:DropDownList>
 57                        </EditItemTemplate>
 58                    </asp:TemplateColumn>
 59                    <asp:BoundColumn DataField="brod" HeaderText="生日" DataFormatString="{0:yyyy}"></asp:BoundColumn>
 60                    <asp:TemplateColumn HeaderText="分数">
 61                        <ItemTemplate>
 62                            <asp:Label id=Label3 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.num") %>'>
 63                            </asp:Label>
 64                        </ItemTemplate>
 65                        <FooterTemplate>
 66                            <FONT face="宋体"></FONT>
 67                        </FooterTemplate>
 68                        <EditItemTemplate>
 69                            <asp:TextBox id=TextBox1 runat="server" Width="72px" Text='<%# DataBinder.Eval(Container, "DataItem.num") %>'>
 70                            </asp:TextBox>
 71                        </EditItemTemplate>
 72                    </asp:TemplateColumn>
 73                    <asp:ButtonColumn Text="选择" HeaderText="选择" CommandName="Select"></asp:ButtonColumn>
 74                    <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" HeaderText="编辑" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
 75                    <asp:ButtonColumn Text="删除" HeaderText="删除" CommandName="Delete"></asp:ButtonColumn>
 76                    <asp:TemplateColumn HeaderText="自定义删除">
 77                        <ItemTemplate>
 78                            <FONT face="宋体">
 79                                <asp:Button id="btnde" runat="server" Text="删除" CommandName="userde"></asp:Button></FONT>
 80                        </ItemTemplate>
 81                    </asp:TemplateColumn>
 82                    <asp:TemplateColumn HeaderText="全选">
 83                        <HeaderTemplate>
 84                            <FONT face="宋体">
 85                                <asp:CheckBox id="chkall" runat="server" OnCheckedChanged="chkall" Text="全选" AutoPostBack="True"></asp:CheckBox></FONT>
 86                        </HeaderTemplate>
 87                        <ItemTemplate>
 88                            <FONT face="宋体">
 89                                <asp:CheckBox id="chk" runat="server" Text="选择"></asp:CheckBox></FONT>
 90                        </ItemTemplate>
 91                    </asp:TemplateColumn>
 92                </Columns>
 93                <PagerStyle HorizontalAlign="Right" ForeColor="Black" BackColor="White"></PagerStyle>
 94            </asp:datagrid><asp:literal id="Literal1" runat="server"></asp:literal><asp:literal id="Literal2" runat="server"></asp:literal>
 95            <asp:Button id="btndelete" style="Z-INDEX: 102; LEFT: 80px; POSITION: absolute; TOP: 272px"
 96                runat="server" Width="128px" Text="删除选中的行"></asp:Button>
 97            <asp:Label id="Label1" style="Z-INDEX: 103; LEFT: 48px; POSITION: absolute; TOP: 328px" runat="server">在表格中控件,例如下拉列表或者RadioButton,因为做个例题我花的时间实在太多了,老婆在催出去走走,所以有兴趣的可以自己试下;)所以,您如果是完全复制我这两个页去做实验的话,<SPAN 
 98style="COLOR: #ff0000" 
 99twffan="done">别忘记了,导出代码虽然全部正确,但是在这个页却是不能用的!</SPAN><BR>前台页面:</asp:Label>
100            <asp:Button id="Button1" style="Z-INDEX: 104; LEFT: 232px; POSITION: absolute; TOP: 272px" runat="server"
101                Width="120px" Text="隐藏一列"></asp:Button>
102            <asp:Button id="Button2" style="Z-INDEX: 105; LEFT: 384px; POSITION: absolute; TOP: 272px" runat="server"
103                Text="导出EXCEL文件"></asp:Button></form>
104    </body>
105</HTML>
106

 

 


  1using System;
  2using System.Collections;
  3using System.ComponentModel;
  4using System.Data;
  5using System.Drawing;
  6using System.Web;
  7using System.Web.SessionState;
  8using System.Web.UI;
  9using System.Web.UI.WebControls;
 10using System.Web.UI.HtmlControls;
 11//添加I0命名空间
 12using System.IO;
 13using System.Data.OleDb;
 14namespace databind
 15{
 16    /// <summary>
 17    /// datagrid_a 的摘要说明。
 18    /// </summary>

 19    public class datagrid_a : System.Web.UI.Page
 20    {
 21        protected System.Web.UI.WebControls.Literal Literal1;
 22        protected System.Web.UI.WebControls.Literal Literal2;
 23        protected System.Web.UI.WebControls.Button btndelete;
 24        protected System.Web.UI.WebControls.Label Label1;
 25        protected System.Web.UI.WebControls.Button Button1;
 26        protected System.Web.UI.WebControls.Button Button2;
 27        protected System.Web.UI.WebControls.DataGrid dg;
 28    
 29        private void Page_Load(object sender, System.EventArgs e)
 30        {
 31            this.btndelete.Attributes.Add("onclick","return confirm('你真的要删除所选的项吗?')");
 32            if(!IsPostBack)
 33            {
 34                fill();
 35            }

 36
 37        }

 38
 39        Web 窗体设计器生成的代码
 67
 68        private void fill()
 69        {
 70            OleDbConnection odb=new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source="+Server.MapPath("\\databind\\db.mdb")+";");
 71            OleDbDataAdapter oda=new OleDbDataAdapter();
 72            oda.SelectCommand=new OleDbCommand("select * from sex order by id asc",odb);
 73            DataSet ds=new DataSet();
 74            oda.Fill(ds,"sex");
 75            dg.DataSource=ds.Tables["sex"];
 76            dg.DataKeyField="id";
 77            dg.DataBind();
 78            foreach(DataGridItem dl in dg.Items)//迭代集合
 79            {
 80                //以下是非编辑状态的下拉列表
 81                DropDownList ddl=(DropDownList)dl.FindControl("sex");//找到sex控件并交给ddl
 82                if(ddl!=null)
 83                {
 84                    string sex=ds.Tables["sex"].Rows[dl.ItemIndex][2].ToString();
 85                    if(sex=="True")
 86                    {
 87                        ddl.SelectedValue="True";
 88                    }

 89                    else
 90                    {
 91                        ddl.SelectedValue="False";
 92                    }

 93                }

 94                //以下是可编辑状态的下拉列表
 95                DropDownList dde=(DropDownList)dl.FindControl("sex1");//找到sex控件并交给ddl
 96                if(dde!=null)
 97                {
 98                    //                    string sex=ds.Tables["sex"].Rows[dl.ItemIndex][2].ToString();//得出sex的值
 99                    //                    if(sex=="True")
100                    //                    {
101                    //                        dde.SelectedValue="True";
102                    //                    }
103                    //                    else
104                    //                    {
105                    //                        dde.SelectedValue="False";
106                    //                    }
107                    dde.SelectedValue=ds.Tables["sex"].Rows[dl.ItemIndex][2].ToString();
108                    //其实这样更省事,只是因为sql数据库不支持bool类型,所以必然会出现在SQL库里,这里是其他的,需要转换
109                }

110                int numm=0;
111                for(int i=0;i<dg.Items.Count;i++)//使用循环
112                {
113                    numm+=Convert.ToInt32(ds.Tables["sex"].Rows[i]["num"].ToString());
114                    //得出总和,这里如果是求全部人的分,一定要用数据库,而别用表格中的数字相加,因为我刚才犯了这一错,结果老整不对
115                }

116                int avn=numm/dg.Items.Count;//求平均分
117                foreach(DataGridItem dll in dg.Controls[0].Controls)//在子层中再循环
118                {
119                    if(dll.ItemType==ListItemType.Footer)//如果模板类型是页脚
120                    {
121                        dll.Cells[6].Text=avn.ToString();//那么在页脚里面写上平均分
122                    }

123                }

124            
125            }

126        }

127        private void dg_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
128        {//触发编辑选择行
129            dg.EditItemIndex=e.Item.ItemIndex;
130            fill();
131        }

132
133        private void dg_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
134        {//翻页功能
135            dg.CurrentPageIndex=e.NewPageIndex;
136            fill();
137        }

138
139        private void dg_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
140        {//取消编辑
141            dg.EditItemIndex=-1;
142            fill();
143        }

144        public void chkall(object Sender, System.EventArgs e)
145        {//字定义的动作,该动作发生事件源是自己的前面Datagrid的全选项模板的头模板项中增加的一个OnCheckedChanged="chkall"
146            CheckBox cb=(CheckBox)Sender;//初始化一个复选按纽.并把事件发生的源对象Sender转化后赋值给它
147            if(cb.Text=="全选")
148            {
149                foreach(DataGridItem dl in dg.Items)//迭代表格中所有行
150                {    
151                    CheckBox cbl=(CheckBox)dl.FindControl("chk");//查找名字为chk的控件,并强制类型转换为Checkbox类赋值给cbl
152                    cbl.Checked=cb.Checked;//让该控件的选中状态和头模板中的复选框同步
153                }

154            }

155        }

156        private void btndelete_Click(object sender, System.EventArgs e)
157        {//该按纽也有个客户端事件,让用户确认是否真的删除,这句加到load事件中的..啊?这句是什么?看了下面就知道了
158            foreach(DataGridItem dl in dg.Items)//也要迭代表格中所有行
159            {
160                CheckBox cb=(CheckBox)dl.FindControl("chk");//找到每行的复选框
161                if(cb.Checked)//如果他被选中了
162                {
163                    string id=dl.Cells[0].Text.ToString();//利用迭代,得到他的第一列的值
164                    Response.Write(id+"<br>");
165                }

166            }

167            dg.CurrentPageIndex=0;//把当前页码赋值为 0
168            fill();//重新绑定
169        }

170        private void dg_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)//这些事件名称都是固定的,
171        {//在前面名叫 dg 的datagrid中,我们加了一个模板列,在模板列中放了一个按纽(btnde)
172            switch(e.Item.ItemType)//循环判断
173            {
174                case ListItemType.Item://如果是项
175                case ListItemType.AlternatingItem://如果是交替项
176                case ListItemType.EditItem://如果是编辑项
177                    Button btn=(Button)e.Item.FindControl("btnde");//找到名为btnde的按纽
178                    btn.Text="94要删了你";//给按纽上的文字赋值
179                    btn.Attributes.Add("onclick","return confirm('确认删除第"+e.Item.ItemIndex.ToString()+"行吗?')");//动作,确认删除
180                    break;
181            }

182        }

183
184        private void dg_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)//这些事件名称都是固定的,
185        {//下面我们用另种方式来判断,就当是复习吧,
186            if(e.Item.ItemType==ListItemType.AlternatingItem||e.Item.ItemType==ListItemType.EditItem||e.Item.ItemType==ListItemType.Item)//也是判断当前项的类型的
187            {
188                e.Item.Attributes.Add("onmouseover","c=this.style.backgroundColor;this.style.backgroundColor='#0066ff'");//鼠标来了,读出当前行现在背景色,并把背景色换成指定的
189                e.Item.Attributes.Add("onmouseout","this.style.backgroundColor=c");//鼠标走了,把背景色还原成开始的
190                
191                OleDbConnection odb=new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source="+Server.MapPath("\\databind\\db.mdb")+";");//读数据库
192                OleDbDataAdapter oda=new OleDbDataAdapter();//实例化时局适配器
193                oda.SelectCommand=new OleDbCommand("select * from sex order by id asc",odb);//读取数据
194                DataSet ds=new DataSet();//实例化本地内存库
195                oda.Fill(ds,"sex");//装载数据到本地表sex
196                DataTable dt=ds.Tables["sex"];//把内存库中的sex表交给 dt 表
197                string name=dt.Rows[(int)e.Item.ItemIndex][1].ToString();//读出数据表中的 当前行,第二列的数据
198                ((LinkButton)e.Item.Cells[9].Controls[0]).Attributes.Add("onclick","return confirm('确定删除("+name+")?')");//确认动作
199            }

200            //下面动作的控制编辑状态下的TextBox宽度的
201            if(e.Item.ItemType==ListItemType.EditItem)//因为这个只控制编辑状态下的文本框宽度
202            {
203                for(int i=0;i<e.Item.Cells.Count;i++)//循环当前项所有元素
204                {
205                    if(e.Item.Cells[i].Controls.Count>0)//如果子控件数量大于0
206                    {
207                        try
208                        {
209                            TextBox tb=(TextBox)e.Item.Cells[i].Controls[0];//找出textbox控件并转换成TextBox再赋值给 tb 
210                            tb.Width=50;//设定他的宽度
211                        }

212                        catch(Exception a)
213                        {
214                            //不需要返回错误,麻烦
215                        }

216                    }

217                }

218            }

219        }

220
221        private void Button1_Click(object sender, System.EventArgs e)
222        {
223            int ss=3;//这个是自己设定的,你可以是0 ,1,2,3,4,5任意
224            dg.Columns[ss].Visible=false;//这个没有技术含量,但是,朋友写,在特殊的时候总有特殊的要求,呵呵!
225        }

226
227        private void Button2_Click(object sender, System.EventArgs e)
228        {//这个动作会和全选有冲突,
229            Response.ContentType="application/vnd.ms-excel";//指定内容类型
230            Response.Charset="";  //字符集是空,因为我也不知道到底有多少总,所以就空了,有兴趣的可以去研究下,别忘记告诉我下 我qq是 110535808
231            this.EnableViewState=false//指定页请求结束时仍然保持现在状态
232            System.IO.StringWriter sw=new StringWriter();//将信息写如到字符串中
233            System.Web.UI.HtmlTextWriter hw=new HtmlTextWriter(sw);//说穿了就是把html格式一起给写进去了
234            dg.RenderControl(hw);//主题开始了,这里就开始把控件中内容输出到对象去
235            Response.Write(sw.ToString());
236            Response.End();
237        }

238
239    }

240}

241