欢迎大家访问我的BLOG,我会多多的出原创文章,希望大家支持我,为我祈祷,让我实现我的三个梦想!再30岁能成为一个名优秀的软件架构师!

DataGrid应用在管理列表中的经典实例

  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;
 11using System.Data.SqlClient;
 12using System.Configuration;
 13
 14namespace news.admin
 15{
 16    /// <summary>
 17    /// admin_article 的摘要说明。
 18    /// </summary>

 19    public class admin_article : System.Web.UI.Page
 20    {
 21        protected System.Data.SqlClient.SqlConnection SqlConnection1;        //添加数据库的操作对象
 22        protected System.Data.SqlClient.SqlDataAdapter SqlDataAdapter1;
 23        protected System.Data.DataSet DataSet1;
 24        protected System.Data.SqlClient.SqlCommand SqlCommand1;
 25        protected System.Data.SqlClient.SqlDataReader SqlDataReader1;
 26
 27        protected System.Web.UI.WebControls.Button Button1;
 28        protected System.Web.UI.WebControls.Label myLabel;
 29        protected System.Web.UI.WebControls.TextBox keyword;
 30        protected System.Web.UI.WebControls.DropDownList search;
 31        protected System.Web.UI.WebControls.LinkButton LinkButton1;
 32        protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1;
 33        protected System.Web.UI.WebControls.LinkButton btnFirst;
 34        protected System.Web.UI.WebControls.LinkButton LinkButton2;
 35        protected System.Web.UI.WebControls.LinkButton Linkbutton3;
 36        protected System.Web.UI.WebControls.LinkButton Linkbutton4;
 37        protected System.Web.UI.WebControls.Label lblCurrentIndex;
 38        protected System.Web.UI.WebControls.Label lblPageCount;
 39        protected System.Web.UI.WebControls.DropDownList DropDownList1;
 40        protected System.Web.UI.WebControls.Button Button2;
 41        protected System.Web.UI.WebControls.DropDownList DropDownList2;
 42        protected System.Web.UI.WebControls.Button Button3;
 43        protected System.Web.UI.WebControls.DataGrid MyDataGrid;
 44    
 45        private void Page_Load(object sender, System.EventArgs e)
 46        {
 47                getClass();                
 48                getArticle();
 49
 50                for(int i=1;i<=MyDataGrid.PageCount;i++)
 51                {
 52                    DropDownList2.Items.Add(""+i+"");
 53                }

 54            //Page.DataBind();
 55        }

 56
 57        private void getClass()                                     //根据权限设置分类和ClassName控件的下拉列表
 58        {    
 59            string  da=(string)Session["userclass"]    ;
 60            string  classname=(string)Session["classname"];
 61            if(da.Trim()=="系统管理员")
 62            {
 63                SqlConnection1 = new SqlConnection(ConfigurationSettings.AppSettings["dsn"]);//连接字符串,建立连接
 64                SqlDataAdapter1 = new SqlDataAdapter();
 65                SqlDataAdapter1.SelectCommand=new SqlCommand("sp_selFclassAll",SqlConnection1);
 66                SqlDataAdapter1.SelectCommand.CommandType=CommandType.StoredProcedure ;
 67                DataSet1=new DataSet();        
 68                try
 69                {
 70                    SqlDataAdapter1.Fill(DataSet1,"ClassName");
 71                }

 72                catch (SqlException e1)
 73                {
 74                    myLabel.Text ="数据库操作错误:"+e1.Message;                
 75                }

 76                DropDownList1.DataSource=DataSet1.Tables["ClassName"].DefaultView;
 77                DropDownList1.DataTextField="className";
 78                DropDownList1.DataValueField="className";
 79                DropDownList1.DataBind(); 
 80                SqlConnection1.Close();
 81                DropDownList1.Items.Add("全部");
 82                DropDownList1.Items.FindByText("全部").Selected=true;
 83            }

 84            else    //不是系统管理员,只能管理一个新闻分类
 85            {
 86                ListItem d=new ListItem(classname,classname);                
 87                DropDownList1.Items.Add(d);
 88            }

 89        }

 90
 91        private void getArticle()                        //取得Article数据
 92        {
 93            SqlConnection1 = new SqlConnection(ConfigurationSettings.AppSettings["dsn"]);//取连接字符串,建立连接
 94            SqlDataAdapter1 = new SqlDataAdapter();
 95            string g=(string)Session["userclass"];    
 96            string h=(string)Session["classname"];
 97            if(g.Trim()=="系统管理员"&&h.Trim()=="12")    
 98            {
 99                SqlDataAdapter1.SelectCommand=new SqlCommand("SELECT * FROM db_Article ORDER BY dateandtime DESC ",SqlConnection1);
100            }

101            else 
102            {
103                SqlDataAdapter1.SelectCommand=new SqlCommand("SELECT * FROM db_Article WHERE (classname = @classname) ORDER BY dateandtime DESC",SqlConnection1);
104                SqlDataAdapter1.SelectCommand.Parameters.Add("@classname",SqlDbType.Char,40);
105                SqlDataAdapter1.SelectCommand.Parameters["@classname"].Value=(string)Session["classname"];        
106            }

107            DataSet1=new DataSet();        
108            try
109            {
110                SqlDataAdapter1.Fill(DataSet1,"Article");
111            }

112            catch (SqlException e1)
113            {
114                myLabel.Text ="数据库操作错误:"+e1.Message;                
115            }

116            MyDataGrid.DataSource=DataSet1;
117            MyDataGrid.DataBind();            
118            lblCurrentIndex.Text=""+((Int32)MyDataGrid.CurrentPageIndex+1)+"";
119            lblPageCount.Text="/共"+MyDataGrid.PageCount+"";            
120            string  da=(string)Session["userclass"]    ;
121            if(da.Trim()=="系统管理员")
122            {
123                Session["classname"]="12";
124            }

125        }
    
126
127        public void PagerButtonClick(Object sender, EventArgs e)
128        {
129            //获得LinkButton的参数值
130            string arg = ((LinkButton)sender).CommandArgument;
131            switch(arg)
132            {
133                case ("next"):
134                {
135                    if (MyDataGrid.CurrentPageIndex < (MyDataGrid.PageCount - 1))
136                        MyDataGrid.CurrentPageIndex ++;
137                    break;
138                }

139                case ("prev"):
140                {
141                    if (MyDataGrid.CurrentPageIndex > 0)
142                        MyDataGrid.CurrentPageIndex --;
143                    break;
144                }

145                case ("last"):
146                {
147                    MyDataGrid.CurrentPageIndex = (MyDataGrid.PageCount - 1);
148                    break;
149                }

150                case("first"):
151                {
152                    MyDataGrid.CurrentPageIndex =0;
153                    break;
154                }

155            }

156            if(DropDownList1.SelectedItem.Text.Trim()=="全部")
157            {
158                getArticle();
159            }

160            else
161            {
162                Session["classname"]=DropDownList1.SelectedItem.Text.Trim();
163                getArticle();    
164            }

165        }

166
167        Web Form Designer generated code
192
193        public void MyDataGrid_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)    //删除新闻
194        {      
195            string c=(string)Session["userclass"];            
196            if(c.Trim()=="系统管理员"||(int)Session["chgnews"]==1)
197            {    //删除分类发表文章数            
198                SqlConnection1 = new SqlConnection(ConfigurationSettings.AppSettings["dsn"]); //取连接字符串,并建立连接
199                SqlCommand1=new SqlCommand("sp_delClassNum",SqlConnection1); 
200                SqlCommand1.CommandType=CommandType.StoredProcedure;
201                SqlCommand1.Parameters.Add("@className",SqlDbType.Char);
202                SqlCommand1.Parameters["@className"].Value = e.Item.Cells[2].Text.Trim();    //Session["classname"].ToString().Trim();
203                try
204                {
205                    SqlConnection1.Open();
206                    SqlCommand1.ExecuteNonQuery();                                        
207                }

208                catch (SqlException e1)
209                {
210                    myLabel.Text ="数据库操作错误:"+e1.Message;
211                }

212                SqlConnection1.Close();                    
213                //删除文章
214                SqlCommand1=new SqlCommand("sp_delArticle",SqlConnection1); 
215                SqlCommand1.CommandType=CommandType.StoredProcedure;
216                SqlCommand1.Parameters.Add(new SqlParameter("@articleid",SqlDbType.BigInt));
217                SqlCommand1.Parameters["@articleid"].Value = MyDataGrid.DataKeys[e.Item.ItemIndex]; 
218                try
219                {
220                    SqlConnection1.Open();
221                    int r=SqlCommand1.ExecuteNonQuery();
222                    if(r>0)
223                    {
224                        myLabel.Text="删除成功!";                        
225                    }

226                    else
227                    {
228                        myLabel.Text="删除错误!";
229                    }
                    
230                    getArticle();
231                }

232                catch (SqlException e1)
233                {
234                    myLabel.Text ="数据库操作错误:"+e1.Message;
235                }

236                SqlConnection1.Close();  
237                //删除管理员发表文章数
238                SqlCommand1=new SqlCommand("sp_delNum",SqlConnection1); 
239                SqlCommand1.CommandType=CommandType.StoredProcedure;
240                SqlCommand1.Parameters.Add(new SqlParameter("@username",SqlDbType.Char,200));
241                SqlCommand1.Parameters["@username"].Value = e.Item.Cells[4].Text.Trim();    //文章的发表者
242                try
243                {
244                    SqlConnection1.Open();
245                    SqlCommand1.ExecuteNonQuery();                                        
246                }

247                catch (SqlException e1)
248                {
249                    myLabel.Text ="数据库操作错误:"+e1.Message;
250                }

251                SqlConnection1.Close();    
252            }

253            else
254            {
255                myLabel.Text="你无权删除此新闻";
256            }

257        }

258
259        private void LinkButton1_Click(object sender, System.EventArgs e)    //搜索数据库
260        {
261            if(Page.IsValid)
262            {
263                SqlConnection1 = new SqlConnection(ConfigurationSettings.AppSettings["dsn"]);//取连接字符串,建连接
264                SqlDataAdapter1 = new SqlDataAdapter();        
265                if(search.SelectedIndex==0)    
266                {
267                    SqlDataAdapter1.SelectCommand=new SqlCommand("sp_searchCkArticleByTitle",SqlConnection1);     
268                    SqlDataAdapter1.SelectCommand.CommandType=CommandType.StoredProcedure ;
269                    SqlDataAdapter1.SelectCommand.Parameters.Add("@title",SqlDbType.NVarChar ,500);
270                    SqlDataAdapter1.SelectCommand.Parameters["@title"].Value=keyword.Text.Trim() ;                    
271                }

272                else 
273                {
274                    SqlDataAdapter1.SelectCommand=new SqlCommand("sp_searchCkArticleByContent",SqlConnection1);     
275                    SqlDataAdapter1.SelectCommand.CommandType=CommandType.StoredProcedure ;
276                    SqlDataAdapter1.SelectCommand.Parameters.Add("@content",SqlDbType.NText);
277                    SqlDataAdapter1.SelectCommand.Parameters["@content"].Value=keyword.Text.Trim(); 
278                }

279                DataSet1=new DataSet();        
280                try
281                {
282                    SqlDataAdapter1.Fill(DataSet1,"Article");
283                }

284                catch (SqlException e1)
285                {
286                    myLabel.Text ="数据库操作错误:"+e1.Message;                
287                }

288                MyDataGrid.DataSource=DataSet1;
289                MyDataGrid.DataBind();                
290            }

291        }

292        public void fixLink_Click(object sender, System.EventArgs e)
293        {
294            string query=null;
295            LinkButton fixLinkone=new LinkButton();
296            LinkButton Recommendone=new LinkButton();
297            Recommendone=(LinkButton)sender;
298            fixLinkone=(LinkButton)sender;
299            SqlConnection thisConnection=new SqlConnection(ConfigurationSettings.AppSettings["dsn"]);
300            if(Recommendone.Text.Trim()=="取消推荐")
301            {
302                query="update db_Article Set headline=0 where articleid="+Convert.ToInt32(Recommendone.CommandName);
303            }

304            else if(Recommendone.Text.Trim()=="设置推荐")
305            {
306                query="update db_Article Set headline=1 where articleid="+Convert.ToInt32(Recommendone.CommandName);
307            }

308            if(fixLinkone.Text.Trim()=="取消固顶")
309            {
310                query="update db_Article Set Isfixup=0 where articleid="+Convert.ToInt32(fixLinkone.CommandName);
311            }

312            else if(fixLinkone.Text.Trim()=="固顶")
313            {
314                query="update db_Article Set Isfixup=1 where articleid="+Convert.ToInt32(fixLinkone.CommandName);
315            }

316            SqlCommand thisCommand=new SqlCommand(query,thisConnection);
317            thisCommand.Connection.Open();
318            thisCommand.ExecuteNonQuery();
319            thisCommand.Connection.Close();
320            getArticle();
321        }

322    
323        private void MyDataGrid_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
324        {
325            MyDataGrid.CurrentPageIndex = e.NewPageIndex;    
326            getArticle();
327        }

328
329        private void MyDataGrid_SelectedIndexChanged(object sender, System.EventArgs e)
330        {
331    
332        }

333
334        private void Button2_Click(object sender, System.EventArgs e)
335        {
336            Session["classname"]=DropDownList1.SelectedItem.Text.Trim();
337            getArticle();        
338        }

339
340        private void DropDownList2_SelectedIndexChanged(object sender, System.EventArgs e)
341        {
342            MyDataGrid.CurrentPageIndex = DropDownList2.SelectedIndex;
343            if(DropDownList1.SelectedItem.Text.Trim()=="全部")
344            {
345                getArticle();
346            }

347            else
348            {
349                Session["classname"]=DropDownList1.SelectedItem.Text.Trim();
350                getArticle();    
351            }
        
352        }

353
354        private void MyDataGrid_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
355        {
356            ListItemType itemType=e.Item.ItemType;
357            if(itemType==ListItemType.Header)
358            {
359                e.Item.Cells[6].ColumnSpan=5;
360                e.Item.Cells[6].Text="常规管理操作";
361                e.Item.Cells.RemoveAt(10);
362                e.Item.Cells.RemoveAt(9);
363                e.Item.Cells.RemoveAt(8);
364                e.Item.Cells.RemoveAt(7);
365                e.Item.Cells[6].HorizontalAlign=HorizontalAlign.Center;
366            }

367        }

368
369        private void MyDataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
370        {
371            if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem||e.Item.ItemType==ListItemType.EditItem) 
372            {
373                Label MyLabel=new Label();
374                HyperLink recommend=new HyperLink();
375                LinkButton fixLink=new LinkButton();
376                LinkButton Recommendone=new LinkButton();
377                Recommendone=(LinkButton)e.Item.Cells[10].FindControl("Recommend");
378                string property="";
379                fixLink=(LinkButton)e.Item.Cells[8].FindControl("fixLink");
380                fixLink.Click += new System.EventHandler(this.fixLink_Click);
381                MyLabel=(Label)e.Item.Cells[5].FindControl("property");
382                if(Convert.ToInt32(DataBinder.Eval(e.Item.DataItem,"Isfixup"))==1)
383                {
384                    property+="<font color='red'>顶</font>&nbsp;&nbsp;";
385                    fixLink.Text="取消固顶";
386                }

387                else
388                {
389                    fixLink.Text="固顶";
390                }

391                if(Convert.ToInt32(DataBinder.Eval(e.Item.DataItem,"headline"))==1
392                {
393                    Recommendone.Text="取消推荐";
394                    property+="<font color='green'>荐</font>";
395                }

396                else 
397                    Recommendone.Text="设置推荐";
398                MyLabel.Text=property;
399            }

400        }

401    }

402}

403
 1<%@ Page Language="c#" Inherits="news.admin.admin_article" CodeBehind="admin_article.aspx.cs" AutoEventWireup="false" %>
 2<HTML>
 3    <HEAD>
 4        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5        <LINK href="/news/inc/style.css" type="text/css" rel="stylesheet">
 6    </HEAD>
 7    <body>
 8        <div align="center"><asp:label id="myLabel" runat="server" width="100%" ForeColor="Red" Height="2px"></asp:label></div>
 9        <form id="myForm" action="post" runat="server">
10            <div align="center">请选择新闻分类:
11                <asp:dropdownlist id="DropDownList1" runat="server" DESIGNTIMEDRAGDROP="30">
12                    <asp:ListItem Value="全部" Selected="True">全部</asp:ListItem>
13                </asp:dropdownlist><asp:button id="Button2" runat="server" Text="确定"></asp:button>&nbsp;&nbsp;&nbsp;&nbsp; 
14                新闻搜索:&nbsp;
15                <asp:textbox id="keyword" runat="server"></asp:textbox><asp:dropdownlist id="search" runat="server">
16                    <asp:ListItem Value="标题" Selected="True">标题</asp:ListItem>
17                    <asp:ListItem Value="内容">内容</asp:ListItem>
18                </asp:dropdownlist>&nbsp;
19                <asp:linkbutton id="LinkButton1" runat="server" Font-Bold="True" Font-Size="Medium" Font-Underline="True">搜 索</asp:linkbutton>&nbsp;
20                <asp:requiredfieldvalidator id="RequiredFieldValidator1" runat="server" ErrorMessage="*请输入搜索内容!" ControlToValidate="search"></asp:requiredfieldvalidator></BUTTON></div>
21            <br>
22            <ASP:DATAGRID id="MyDataGrid" runat="server" ItemStyle-CssClass="tdbg" HeaderStyle-CssClass="title"
23                CssClass="border" DataKeyField="articleid" AutoGenerateColumns="False" CellPadding="3" Align="center"
24                Width="750px" AllowPaging="True">
25                <EditItemStyle HorizontalAlign="Center" VerticalAlign="Middle"></EditItemStyle>
26                <ItemStyle HorizontalAlign="Left" CssClass="tdbg" VerticalAlign="Middle"></ItemStyle>
27                <HeaderStyle HorizontalAlign="Center" CssClass="title" VerticalAlign="Middle"></HeaderStyle>
28                <Columns>
29                    <asp:BoundColumn DataField="articleid" HeaderText="ID"></asp:BoundColumn>
30                    <asp:TemplateColumn HeaderText="新闻标题(点击修改)">
31                        <ItemTemplate>
32                            <img src="../pic/canedit.gif" align="absMiddle"> <href='admin_articleEdit.aspx?articleid=<%# DataBinder.Eval(Container.DataItem, "articleid")%>'>
33                                <%# DataBinder.Eval(Container.DataItem, "title")%>
34                            </a><FONT face="宋体"></FONT>
35                        </ItemTemplate>
36                    </asp:TemplateColumn>
37                    <asp:BoundColumn DataField="classname" HeaderText="所属分类">
38                        <ItemStyle HorizontalAlign="Center"></ItemStyle>
39                    </asp:BoundColumn>
40                    <asp:BoundColumn DataField="username" HeaderText="发布管理员">
41                        <ItemStyle HorizontalAlign="Center"></ItemStyle>
42                    </asp:BoundColumn>
43                    <asp:BoundColumn DataField="hints" HeaderText="点击数">
44                        <ItemStyle HorizontalAlign="Center"></ItemStyle>
45                    </asp:BoundColumn>
46                    <asp:TemplateColumn HeaderText="咨讯属性">
47                        <ItemTemplate>
48                            <asp:Label ID="property" Runat="server"></asp:Label>
49                        </ItemTemplate>
50                    </asp:TemplateColumn>
51                    <asp:ButtonColumn Text="删除" CommandName="Delete">
52                        <ItemStyle HorizontalAlign="Center"></ItemStyle>
53                    </asp:ButtonColumn>
54                    <asp:TemplateColumn>
55                        <ItemTemplate>
56                            <IMG src="../pic/canedit.gif" align="absMiddle"> <href='admin_remark.aspx?articleid=<%# DataBinder.Eval(Container.DataItem, "articleid")%>&amp;classname=<%# DataBinder.Eval(Container.DataItem, "classname")%>' target=_self>
57                                评论</A>
58                        </ItemTemplate>
59                    </asp:TemplateColumn>
60                    <asp:TemplateColumn>
61                        <ItemTemplate>
62                            <asp:LinkButton CommandName='<%# DataBinder.Eval(Container.DataItem, "articleid")%>' OnClick="fixLink_Click" ID="fixLink" Runat=server>固顶</asp:LinkButton>
63                        </ItemTemplate>
64                    </asp:TemplateColumn>
65                    <asp:TemplateColumn>
66                        <ItemTemplate>
67                            <href='admin_move.aspx?articleid=<%# DataBinder.Eval(Container.DataItem, "articleid")%>&amp;classname=<%# DataBinder.Eval(Container.DataItem, "classname")%>' target=_self>
68                                移动</A>
69                        </ItemTemplate>
70                    </asp:TemplateColumn>
71                    <ASP:TemplateColumn>
72                        <ItemTemplate>
73                            <asp:LinkButton CommandName='<%# DataBinder.Eval(Container.DataItem, "articleid")%>' OnClick="fixLink_Click" ID="Recommend" Runat=server>推荐</asp:LinkButton>
74                        </ItemTemplate>
75                    </ASP:TemplateColumn>
76                </Columns>
77                <PagerStyle NextPageText="下一页" PrevPageText="上一页" HorizontalAlign="Right" PageButtonCount="5"></PagerStyle>
78            </ASP:DATAGRID>
79            <table width="680" align="center">
80                <tr>
81                    <td width="157">
82                        <div align="left"><asp:linkbutton id="btnFirst" onclick="PagerButtonClick" runat="server" ForeColor="HotTrack" Font-Bold="True"
83                                CommandArgument="first">首页||</asp:linkbutton><asp:linkbutton id="LinkButton2" onclick="PagerButtonClick" runat="server" ForeColor="HotTrack"
84                                Font-Bold="True" CommandArgument="prev">前页||</asp:linkbutton><asp:linkbutton id="Linkbutton3" onclick="PagerButtonClick" runat="server" ForeColor="HotTrack"
85                                Font-Bold="True" CommandArgument="next">下页||</asp:linkbutton><asp:linkbutton id="Linkbutton4" onclick="PagerButtonClick" runat="server" ForeColor="HotTrack"
86                                Font-Bold="True" CommandArgument="last">尾页</asp:linkbutton></div>
87                    </td>
88                    <td width="239">
89                        <DIV align="right"><asp:label id="lblCurrentIndex" runat="server" ForeColor="HotTrack" Font-Bold="True"></asp:label><asp:label id="lblPageCount" runat="server" ForeColor="HotTrack" Font-Bold="True"></asp:label><asp:button id="Button3" runat="server" Text="Go"></asp:button><asp:dropdownlist id="DropDownList2" runat="server" Width="41px"></asp:dropdownlist></DIV>
90                    </td>
91                </tr>
92            </table>
93        </form>
94    </body>
95</HTML>
96

posted on 2006-07-12 15:57  程序缘  阅读(176)  评论(0)    收藏  举报

导航