Repeter实现增,删,改,以及分页和排序

 

前台代码:

 

     < form  id ="form1"  runat ="server" >
        
< div >
            
< asp:Panel  ID ="Panel1"  runat ="server"  Height ="50px"  Visible ="False"  Width ="1029px" >
                
< asp:Label  ID ="lblCompanyName"  runat ="server"  Text ="CompanyName"  Visible ="False" ></ asp:Label >
                
< asp:TextBox  ID ="txtCompanyName"  runat ="server"  Visible ="False" ></ asp:TextBox >
                
< asp:Label  ID ="lblName"  runat ="server"  Text ="ContactName"  Visible ="False" ></ asp:Label >
                
< asp:TextBox  ID ="txtContactName"  runat ="server"  Visible ="False" ></ asp:TextBox >
                
< asp:Label  ID ="lblAddress"  runat ="server"  Text ="Address"  Visible ="False" ></ asp:Label >
                
< asp:TextBox  ID ="txtAddress"  runat ="server"  Visible ="False" ></ asp:TextBox >
                
< asp:Label  ID ="lblCity"  runat ="server"  Text ="City"  Visible ="False" ></ asp:Label >
                
< asp:TextBox  ID ="txtCity"  runat ="server"  Visible ="False"  Width ="129px" ></ asp:TextBox >
                
< asp:Button  ID ="btnUpdate"  runat ="server"  Text ="更新"  CommandName ="Update"  OnClick ="btnUpdate_Click"   />
                
< asp:Button  ID ="btnInsert"  runat ="server"  Text ="新增"  OnClick ="btnInsert_Click"   />
                
< asp:Button  ID ="Button1"  runat ="server"  Text ="取消"  CommandName ="Cancel"  OnClick ="Button1_Click"   />
            
</ asp:Panel >
            
< asp:Repeater  ID ="Repeater1"  runat ="server"  OnItemCommand ="Repeater1_ItemCommand"
                OnItemDataBound
="Repeater1_ItemDataBound" >
                
< HeaderTemplate >
                    
< table  border ="0"  width ="100%" >
                        
< tr >
                            
< th  align ="left" >
                                SupplierID
</ th >
                            
< th  align ="left" >
                                CompanyName
</ th >
                            
< th  align ="left" >
                                ContactName
</ th >
                            
< th  align ="left" >
                                Address
</ th >
                            
< th  align ="left" >
                                City
</ th >
                            
< th >
                            
</ th >
                            
< th >
                            
</ th >
                            
< th >
                            
</ th >
                        
</ tr >
                
</ HeaderTemplate >
                
< ItemTemplate >
                    
< tr  id ="Item"  runat ="server" >
                        
< td >
                            
< asp:Label  ID ="lblID"  runat ="server"  Text ='<%#Eval("SupplierID")  % > '> </ asp:Label >
                        
</ td >
                        
< td >
                            
< asp:Label  ID ="lblCompanyName"  runat ="server"  Text ='<%#Eval("CompanyName")  % > '> </ asp:Label >
                        
</ td >
                        
< td >
                            
< asp:Label  ID ="lblName"  runat ="server"  Text ='  <%#Eval("ContactName") % > '> </ asp:Label >
                        
</ td >
                        
< td >
                            
< asp:Label  ID ="lblAddress"  runat ="server"  Text ='<%#Eval("Address")  % > '> </ asp:Label >
                        
</ td >
                        
< td >
                            
< asp:Label  ID ="lblCity"  runat ="server"  Text ='<%#Eval("City")  % > '> </ asp:Label >
                        
</ td >
                        
< td >
                            
< asp:Button  ID ="Edit"  runat ="server"  Text ="编辑"  CommandName ="Edit"   /></ td >
                        
< td >
                            
< asp:Button  ID ="Delete"  runat ="server"  Text ="删除"  CommandName ="Delete"   /></ td >
                        
< td >
                            
< asp:Button  ID ="New"  runat ="server"  Text ="新增"  CommandName ="New"   /></ td >
                    
</ tr >
                
</ ItemTemplate >
                
< AlternatingItemTemplate >
                    
< tr  bgcolor ="#e8e8e8"  id ="Alter"  runat ="server" >
                        
< td >
                            
< asp:Label  ID ="lblID"  runat ="server"  Text ='<%#Eval("SupplierID")  % > '> </ asp:Label >
                        
</ td >
                        
< td >
                            
< asp:Label  ID ="lblCompanyName"  runat ="server"  Text ='<%#Eval("CompanyName")  % > '> </ asp:Label >
                        
</ td >
                        
< td >
                            
< asp:Label  ID ="lblName"  runat ="server"  Text ='  <%#Eval("ContactName") % > '> </ asp:Label >
                        
</ td >
                        
< td >
                            
< asp:Label  ID ="lblAddress"  runat ="server"  Text ='<%#Eval("Address")  % > '> </ asp:Label >
                        
</ td >
                        
< td >
                            
< asp:Label  ID ="lblCity"  runat ="server"  Text ='<%#Eval("City")  % > '> </ asp:Label >
                        
</ td >
                        
< td >
                            
< asp:Button  ID ="Edit"  runat ="server"  Text ="编辑"  CommandName ="Edit"   /></ td >
                        
< td >
                            
< asp:Button  ID ="Delete"  runat ="server"  Text ="删除"  CommandName ="Delete"   /></ td >
                        
< td >
                            
< asp:Button  ID ="New"  runat ="server"  Text ="新增"  CommandName ="New"   /></ td >
                    
</ tr >
                
</ AlternatingItemTemplate >
                
< FooterTemplate >
                    
</ table >
                
</ FooterTemplate >
            
</ asp:Repeater >
            
< asp:Label  ID ="lblPage"  runat ="server" ></ asp:Label >
            
< asp:Label  ID ="lblCount"  runat ="server" ></ asp:Label >
            
< asp:Button  ID ="Button2"  runat ="server"  OnClick ="Button2_Click"  Text ="上一页"   />
            
< asp:Button  ID ="btnPage"  runat ="server"  OnClick ="btnPage_Click"  Text ="下一页"   />
            
< asp:Button  ID ="btnSort"  runat ="server"  Text ="排序"  OnClick ="btnSort_Click"   /></ div >
    
</ form >

 

后台代码:

 

     string  ConStr  =  ConfigurationManager.ConnectionStrings[ " NorthwindConnectionString " ].ConnectionString;
    SqlConnection Con;

    
protected   void  Page_Load( object  sender, EventArgs e)
    
{
        
if (!IsPostBack)
        
{
            
//设置默认的排序顺序
            ViewState["CompanyName"= "SupplierID";
            ViewState[
"Direction"= "ASC";
            ViewState[
"LineNo"= 0;
            
//初始化的时候默认显示第一页
            lblCount.Text = "1";
            BindRepeter();
        }

    }


    
// 判断命令
     protected   void  Repeater1_ItemCommand( object  source, RepeaterCommandEventArgs e)
    
{
        String Index 
= ((Label)Repeater1.Items[e.Item.ItemIndex].FindControl("lblID")).Text;
        Session[
"ID"= Index;
        
//编辑模式
        if (e.CommandName == "Edit")
        
{
            
string CompanyName = ((Label)(Repeater1.Items[e.Item.ItemIndex].FindControl("lblCompanyName"))).Text;
            
string Name = ((Label)(Repeater1.Items[e.Item.ItemIndex].FindControl("lblName"))).Text;
            
string Address = ((Label)(Repeater1.Items[e.Item.ItemIndex].FindControl("lblAddress"))).Text;
            
string City = ((Label)(Repeater1.Items[e.Item.ItemIndex].FindControl("lblCity"))).Text;
            txtCompanyName.Text 
= CompanyName;
            txtContactName.Text 
= Name;
            txtAddress.Text 
= Address;
            txtCity.Text 
= City;
            
if (Panel1.Visible == false)
            
{
                ShowMessage(
"进入编辑模式");

            }

            SetDisplayTrue();
            btnInsert.Visible 
= false;
            btnUpdate.Visible 
= true;
            Button1.Visible 
= true;
        }

        
//删除
        else if (e.CommandName == "Delete")
        
{
            
if (Panel1.Visible == true)
            
{
                ShowMessage(
"编辑模式下禁止删除");
            }

            
else
            
{
                SetDisplayFalse();
                
string DeleteStr = "DELETE FROM Suppliers WHERE SupplierID='" + Index + "'";
                Con 
=  new SqlConnection(ConStr);
                SqlCommand DeleteCmd 
= new SqlCommand(DeleteStr,Con);
                
try
                
{
                    Con.Open();
                    DeleteCmd.ExecuteNonQuery();
                    ShowMessage(
"删除成功");
                    BindRepeter();
                }

                
catch (Exception ex)
                
{
                    ShowMessage(
"删除有错误,请检查");
                }

                
finally
                
{
                    Con.Dispose();
                }

                
            }

        }
//新增
        else if (e.CommandName == "New")
        
{
            
if (Panel1.Visible == true)
            
{
                ShowMessage(
"编辑模式下禁止添加新行");
            }

            
else
            
{
                SetDisplayTrue();
                ClearWord();
                btnInsert.Visible 
= true;
                btnUpdate.Visible 
= false;
                Button1.Visible 
= true;
            }


        }

    }


    
// 绑定Repeter
     private   void  BindRepeter()
    
{
        
string QueryCon = "SELECT SupplierID,CompanyName,ContactName,Address,City FROM Suppliers";
        Con 
= new SqlConnection(ConStr);
        SqlDataAdapter NorthWindDa 
= new SqlDataAdapter(QueryCon, ConStr);
        DataSet Ds 
= new DataSet();
        NorthWindDa.Fill(Ds, 
"Suppliers");
        
//Repeater1.DataKeyNames = new string[] { "SupplierID" };
        DataView Dv = Ds.Tables["Suppliers"].DefaultView;
        
//排序表达式
        string SortExpress = (string)ViewState["CompanyName"+ " " + (string)ViewState["Direction"];
        Dv.Sort 
= SortExpress;
        
//绑定数据源
        
//Repeater1.DataSource = Ds.Tables["Suppliers"];
        
//利用PagedDataSource进行分页
        PagedDataSource PageDs = new PagedDataSource();
        PageDs.DataSource 
= Dv;
        PageDs.AllowPaging 
= true;
        PageDs.PageSize 
= 10;
        
int CurrentPage = Convert.ToInt32(lblCount.Text);
        
//当前页
        PageDs.CurrentPageIndex = CurrentPage-1;
        btnPage.Enabled 
= true;
        Button2.Enabled 
= true;
        
if (CurrentPage == 1)
        
{
            Button2.Enabled 
= false;
        }

        
if (CurrentPage == PageDs.PageCount)
        
{
            btnPage.Enabled 
= false;
        }

        
//PageCount = PageDs.PageCount;
        lblPage.Text = "" + PageDs.PageCount + "页,当前在第";
        
//将PageDs作为数据源进行绑定
        Repeater1.DataSource = PageDs;
        Repeater1.DataBind();
        
    }


    
// 显示编辑区域
     private   void  SetDisplayTrue()
    
{
        lblCompanyName.Visible 
= true;
        lblName.Visible 
= true;
        lblAddress.Visible 
= true;
        lblCity.Visible 
= true;
        txtCompanyName.Visible 
= true;
        txtContactName.Visible 
= true;
        txtAddress.Visible 
= true;
        txtCity.Visible 
= true;
        Panel1.Visible 
= true;
    }


    
// 隐藏编辑区域
     private   void  SetDisplayFalse()
    
{
        lblCompanyName.Visible 
= false;
        lblName.Visible 
= false;
        lblAddress.Visible 
= false;
        lblCity.Visible 
= false;
        txtCompanyName.Visible 
= false;
        txtContactName.Visible 
= false;
        txtAddress.Visible 
= false;
        txtCity.Visible 
= false;
        Panel1.Visible 
= false;
    }


    
private   void  ClearWord()
    
{
        txtCompanyName.Text 
= "";
        txtContactName.Text 
= "";
        txtAddress.Text 
= "";
        txtCity.Text 
= "";
    }

    
// 封装javascript
     private   void  ShowMessage( string  Message)
    
{
        Literal TxtMsg 
= new Literal();
        TxtMsg.Text 
= "<script>alert('"+Message+"')</script>";
        Page.Controls.Add(TxtMsg);
    }



    
// 更新数据
     protected   void  btnUpdate_Click( object  sender, EventArgs e)
    
{
        
/*在有数据输入的时候应该检查输入数据的合法性,
         * 过滤掉特殊的脚本,特殊的字符串,提高安全性
        
*/

        
string CompanyName = Server.HtmlEncode(txtCompanyName.Text.ToString());
        
string ContactName = Server.HtmlEncode(txtContactName.Text.ToString());
        
string Address = Server.HtmlEncode(txtAddress.Text.ToString());
        
string City = Server.HtmlEncode(txtCity.Text.ToString());
        
string UpdateStr = "UPDATE Suppliers SET CompanyName='" + CompanyName + "',ContactName='" + ContactName + "'," +
                 
"Address='" + Address + "',City='" + City + "' WHERE SupplierID='" + Session["ID"+ "";
        Con 
= new SqlConnection(ConStr);
        SqlCommand UpdateCmd 
= new SqlCommand(UpdateStr,Con);
        
try
        
{
            Con.Open();
            UpdateCmd.ExecuteNonQuery();
            ShowMessage(
"更新成功");
            SetDisplayFalse();
            BindRepeter();
        }

        
catch (Exception ex)
        
{
            ShowMessage(
"更新出错,请重新输入");
        }

        
finally
        
{
            Con.Dispose();
        }

    }



    
protected   void  Button1_Click( object  sender, EventArgs e)
    
{
        SetDisplayFalse();
    }


    
// 插入一行新数据
     protected   void  btnInsert_Click( object  sender, EventArgs e)
    
{
        
string CompanyName = Server.HtmlEncode(txtCompanyName.Text.ToString());
        
string ContactName = Server.HtmlEncode(txtContactName.Text.ToString());
        
string Address = Server.HtmlEncode(txtAddress.Text.ToString());
        
string City = Server.HtmlEncode(txtCity.Text.ToString());
        
string InsertStr = "INSERT INTO Suppliers (CompanyName,ContactName,Address,City) VALUES('" + CompanyName + "','" + ContactName + "','" + Address + "','" + City + "')";
        Con 
= new SqlConnection(ConStr);
        SqlCommand InsertCmd 
= new SqlCommand(InsertStr, Con);
        
try
        
{
            Con.Open();
            InsertCmd.ExecuteNonQuery();
            ShowMessage(
"插入成功");
            SetDisplayFalse();
            BindRepeter();
        }

        
catch (Exception ex)
        
{
            ShowMessage(
"插入失败,请重新检查");
        }

        
finally
        
{
            Con.Dispose();
        }

    }


    
    
// 给删除按钮添加客户端的Confirm对话框
     protected   void  Repeater1_ItemDataBound( object  sender, RepeaterItemEventArgs e)
    
{

        
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
        
{
            ((Button)Repeater1.Controls[Repeater1.Controls.Count
-1].FindControl("Delete")).Attributes["onclick"= "if(!confirm('你真的要删除这条记录么?'))return   false;";
        }


    }



    
// 下一页
     protected   void  btnPage_Click( object  sender, EventArgs e)
    
{
        
//更改pageds的当前页数
        lblCount.Text = Convert.ToString(Convert.ToInt32(lblCount.Text) + 1);
        BindRepeter();
    }


    
// 上一页
     protected   void  Button2_Click( object  sender, EventArgs e)
    
{
        
//更改当前页
        lblCount.Text = Convert.ToString(Convert.ToInt32(lblCount.Text)-1);
        BindRepeter();
    }


    
// 排序
     protected   void  btnSort_Click( object  sender, EventArgs e)
    
{
        
//判断排序表达式的顺序
        if (ViewState["Direction"].ToString() == "DESC")
        
{
            ViewState[
"Direction"= "ASC";
        }

        
else
        
{
            ViewState[
"Direction"= "DESC";
        }

        
/*设置完排序的顺序以后,将排序后的dataview
         *绑定到repeter上。这个方法,目前有个缺陷,
         * 每次排序的时候都是将整个数据源进行排序,
         * 并不是对当前的分页进行排序。
        
*/

        BindRepeter();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值