求有价值的Repeater的代码和精辟的介绍

 

 

 

<%@   Page   language="c#"   Codebehind="ICPlanEdit.aspx.cs"   AutoEventWireup="false"   Inherits="ICAudit.ICPlanEdit"   %>  
  <!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.0   Transitional//EN"   >  
  <HTML>  
  <HEAD>  
  <title>ICPlan</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">  
  <LINK   href="../css/style.css"   type="text/css"   rel="stylesheet">  
  <script   language="javascript"   src="../js/formcheck.js"></script>  
  </HEAD>  
  <body   MS_POSITIONING="GridLayout">  
  <form   id="Form1"   method="post"   runat="server">  
  <table   style="WIDTH:   739px;   HEIGHT:   366px"   align="center"   border="0">  
  <TBODY>  
  <tr>  
  <td   colspan="5"   align="center"><IMG   src="../images/iczhbj.gif"   border="0"></td>  
  </tr>  
  <tr>  
  <td   align="left">  
  计划描述信息:<asp:TextBox   id="PlanDescript"   runat="server"   MaxLength="50"></asp:TextBox>  
  </td>  
  </tr>  
  <tr>  
  <td>编制单位:大连市信息产业局  
  </td>  
  </tr>  
  <tr>  
  <td   valign="top"   style="HEIGHT:   186px">  
  <asp:Repeater   id="RepeaterICPlan"   runat="server">  
  <HeaderTemplate>  
  <table   width="100%"   border="1"   cellpadding="0"   cellspacing="0"   bordercolor="#000000"   bordercolorlight="#003366"  
  bordercolordark="#FFFFFF">  
  <tr>  
  <td   style="WIDTH:   33px">  
  编号  
  </td>  
  <td   style="WIDTH:   61px">  
  单位<br>  
  名称  
  </td>  
  <td   style="WIDTH:   51px">  
  所有制<br>  
  性质  
  </td>  
  <td   style="WIDTH:   61px">  
  主营业务及重点产品  
  </td>  
  <td   style="WIDTH:   56px">  
  注册资本  
  </td>  
  <td   style="WIDTH:   53px">  
  项目名称  
  </td>  
  <td   style="WIDTH:   53px">  
  计划总投<br>  
  资额(万元)  
  </td>  
  <td>  
  实际投资<br>  
  额(万元)  
  </td>  
  <td>  
  申请金额<br>  
  (万元)  
  </td>  
  <td>  
  计划金额<br>  
  (万元)  
  </td>  
  <td>  
  批准金额<br>  
  (万元)  
  </td>  
  </tr>  
  </HeaderTemplate>  
  <ItemTemplate>  
  <tr>  
  <td>  
  <%#   DataBinder.Eval(Container.DataItem,"projectNo")%>  
  &nbsp;  
  </td>  
  <td>  
  <%#   DataBinder.Eval(Container.DataItem,"projectunit")%>  
  &nbsp;  
  </td>  
  <td>  
  <%#   DataBinder.Eval(Container.DataItem,"ownercode")%>  
  &nbsp;  
  </td>  
  <td   style="WIDTH:   88px">  
  <%#   DataBinder.Eval(Container.DataItem,"mainbussiness")%>  
  &nbsp;  
  </td>  
  <td>  
  <%#   DataBinder.Eval(Container.DataItem,"registmoney")%>  
  &nbsp;  
  </td>  
  <td>  
  <%#   DataBinder.Eval(Container.DataItem,"projectname")%>  
  &nbsp;  
  </td>  
  <td>  
  <%#   DataBinder.Eval(Container.DataItem,"jhztzZj")%>  
  &nbsp;  
  </td>  
  <td>  
  <%#   DataBinder.Eval(Container.DataItem,"xmytzZj")%>  
  &nbsp;  
  </td>  
  <td>  
  <%#   DataBinder.Eval(Container.DataItem,"bnysqzxzjZj")%>  
  &nbsp;  
  </td>  
  <td>  
  <%#   DataBinder.Eval(Container.DataItem,"PlanNumber")%>  
  &nbsp;  
  </td>  
  <td>  
  <asp:TextBox   Runat=server   ID="allowMoney"   text='<%#   DataBinder.Eval(Container.DataItem,"AllowMoney")%>'   Width=50>  
  </asp:TextBox>  
  <asp:RequiredFieldValidator   id="NumRequired"   runat="server"   ControlToValidate="allowMoney"   ErrorMessage="*   批准金额不可为空"  
  Display="Dynamic">  
  *  
  </asp:RequiredFieldValidator>  
  <asp:CompareValidator   id="valdeclaredate"   runat="server"   ControlToValidate="allowMoney"   ValueToCompare="0"  
  Operator="GreaterThan"   Type="double"   ErrorMessage="*   批准金额必须输入大于0的数字!"   Display="dynamic">  
  *  
  </asp:CompareValidator>  
  <input   type=hidden   id="ApplyId"   runat=server   value='<%#   DataBinder.Eval(Container.DataItem,"ID")%>'   NAME="ApplyId">  
  </td>  
  </tr>  
  </ItemTemplate>  
  <FooterTemplate>  
  <tr>  
  <td>&nbsp;  
  </td>  
  <td   align="center">  
  合计  
  </td>  
  <td>--  
  </td>  
  <td>--  
  </td>  
  <td>--  
  </td>  
  <td>--  
  </td>  
  <td>--  
  </td>  
  <td>--  
  </td>  
  <td><asp:label   id="NeedNum"   runat="server"></asp:label>&nbsp;  
  </td>  
  <td><asp:label   id="PlanNum"   runat="server"></asp:label>&nbsp;  
  </td>  
  <td>--  
  </td>  
  </tr>  
  <tr>  
  <td   colspan="11">  
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   制表人:  
  <asp:Label   id="Oper"   runat="server">Label</asp:Label>  
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   制表时间:  
  <asp:Label   id="Finishtime"   runat="server">Labe2</asp:Label>  
  </td>  
  </tr>  
  </table>  
  </FooterTemplate>   </asp:Repeater></TD></TR>  
  <tr>  
  <td   align="center">  
  <asp:ImageButton   id="ImageButton1"   runat="server"   ImageUrl="../images/queding.gif"   CssClass="ImgButton"></asp:ImageButton>  
  <asp:ImageButton   id="ImageButton2"   runat="server"   ImageUrl="../images/quxiao.gif"   CssClass="ImgButton"></asp:ImageButton>  
  </td>  
  </tr>  
  </TBODY></TABLE>  
  <asp:ValidationSummary   id="ValidationSummary1"   runat="server"   ShowMessageBox="True"   ShowSummary="False"  
  DisplayMode="List"></asp:ValidationSummary></form>  
  <script   language="javascript">  
  function   check()  
  {  
  if(!checkEmpty("PlanDescript","计划描述信息"))  
  {  
  return   false;  
  }  
  return   true;  
  }  
  </script>  
  </body>  
  </HTML>  
  Top

9 楼lijianlee(素色人生)回复于 2004-10-11 12:52:32 得分 0

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.OleDb;  
  using   dhc.dataBase;  
  using   dhc.com;  
  using   dhc.log;  
  using   BPOLib;  
  using   BPWBLib;  
   
  namespace   ICAudit  
  {  
  ///   <summary>  
  ///   ICPlan   的摘要说明。  
  ///   </summary>  
  public   class   ICPlanEdit   :   System.Web.UI.Page  
  {  
  protected   System.Web.UI.WebControls.ImageButton   ImageButton1;  
  protected   System.Web.UI.WebControls.ImageButton   ImageButton2;  
  protected   System.Web.UI.WebControls.TextBox   TextBox1;  
  protected   System.Web.UI.WebControls.TextBox   PlanDescript;  
  protected   System.Web.UI.WebControls.ValidationSummary   ValidationSummary1;  
  protected   System.Web.UI.WebControls.Repeater   RepeaterICPlan;  
   
   
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  if   (!this.IsPostBack)  
  {  
  initGrid();  
  ImageButton1.Attributes.Add("onclick","if   (!check())   return   false;");  
  }  
  }  
  private   bool   initGrid()  
  {  
  dbConn   conn   =   new   dbConn();  
  try  
  {  
  conn.openDB("Conn");  
  string   strPlanId   =   Request["Id"];  
   
   
  string   strSql="select   *   from   IcPlan   where   Id   =   '"+strPlanId+"'";  
   
  DataSet   ds   =   conn.getDataSet(strSql,"Plan");  
  if   (ds.Tables["Plan"].Rows.Count   >   0)  
  {  
  DataRow   row   =   ds.Tables["Plan"].Rows[0];  
  PlanDescript.Text   =   row["Descript"].ToString();      
   
  }  
  strSql   =   "select   a.ID,a.projectNo,a.projectname,a.projectunit,a.registmoney,a.mainbussiness,a.ownercode,a.jhztzZj,a.xmytzZj,a.bnysqzxzjZj,a.AllowMoney,b.PlanNumber   from   icDeclare   a,eProcessDB.dbo.XXCYJ_IC   b   where   PlanId   =   '"+strPlanId+"'   and   a.ID=b.ApplyId";  
  OleDbDataReader   dbRead=   conn.getDataReader(strSql);  
  RepeaterICPlan.DataSource   =   dbRead;  
  RepeaterICPlan.DataBind();  
  dbRead.Close();  
  return   true;  
  }  
  catch  
  {  
  Response.Write("发生错误!");  
  return   false;  
  }  
  finally  
  {  
  conn.closeConn();  
  }  
   
   
   
  }  
  #region   Web   窗体设计器生成的代码  
  override   protected   void   OnInit(EventArgs   e)  
  {  
  //  
  //   CODEGEN:   该调用是   ASP.NET   Web   窗体设计器所必需的。  
  //  
  InitializeComponent();  
  base.OnInit(e);  
  }  
   
  ///   <summary>  
  ///   设计器支持所需的方法   -   不要使用代码编辑器修改  
  ///   此方法的内容。  
  ///   </summary>  
  private   void   InitializeComponent()  
  {          
  this.RepeaterICPlan.ItemDataBound   +=   new   System.Web.UI.WebControls.RepeaterItemEventHandler(this.RepeaterICPlan_ItemDataBound);  
  this.ImageButton1.Click   +=   new   System.Web.UI.ImageClickEventHandler(this.ImageButton1_Click);  
  this.Load   +=   new   System.EventHandler(this.Page_Load);  
   
  }  
  #endregion  
   
  private   void   ImageButton1_Click(object   sender,   System.Web.UI.ImageClickEventArgs   e)  
  {  
  dbConn   conn   =   new   dbConn();  
  try  
  {  
  conn.openDB("Conn");  
  conn.beginTrans();  
   
  string   strPlanId   =   Request["Id"];  
  string   strSql="select   *   from   IcPlan   where   Id   =   '"+strPlanId+"'";  
  DataSet   ds   =   conn.getDataSet(strSql,"Plan");  
  if   (ds.Tables["Plan"].Rows.Count   >   0)  
  {  
  DataRow   row   =   ds.Tables["Plan"].Rows[0];  
  row["Descript"]   =     PlanDescript.Text;  
                                          row["Oper"]=Session["NAME"].ToString();  
  row["Finishtime"]=publicFunction.getStandardDate(DateTime.Now.ToString());  
  conn.UpdateDataset("Plan",1);  
  }  
   
  int   iCount   =   RepeaterICPlan.Items.Count;  
  for   (int   i=0;i<iCount;i++)  
  {  
  HtmlInputHidden   hihID   =   (HtmlInputHidden)RepeaterICPlan.Items[i].FindControl("ApplyId");  
  TextBox   tbAllowMoney   =   (TextBox)RepeaterICPlan.Items[i].FindControl("allowMoney");  
  strSql   =   "select   ID,AllowMoney,PlanId   from   icDeclare   where   ID   =   '"+hihID.Value+"'";  
  ds   =   conn.getDataSet(strSql,"IC");  
  if   (ds.Tables["IC"].Rows.Count   >   0)  
  {  
  DataRow   row   =   ds.Tables["IC"].Rows[0];  
  row["AllowMoney"]   =   tbAllowMoney.Text;  
  conn.UpdateDataset("IC",1);  
  }  
  }  
  conn.commitTrans();  
  Response.Write("<script   language='javascript'>");  
  Response.Write("alert('信息成功保存');");  
  Response.Write("window.location.replace('IcPlanList.aspx');");    
  Response.Write("</script>");  
  }  
  catch  
  {  
  conn.rollbackTrans();  
  Response.Write("发生错误!");  
  }  
  finally  
  {  
  conn.closeConn();  
  }  
  }  
   
  private   void   RepeaterICPlan_ItemDataBound(object   sender,   System.Web.UI.WebControls.RepeaterItemEventArgs   e)  
  {      
  if   (e.Item.ItemType   ==   ListItemType.Footer)  
  {  
  Label   labOper   =   (Label)e.Item.FindControl("Oper");  
  labOper.Text   =   Session["NAME"].ToString();  
   
  Label   labFinishtime   =   (Label)e.Item.FindControl("Finishtime");  
  labFinishtime.Text   =   publicFunction.getStandardDate(DateTime.Now.ToString());  
  dbConn   conn=   new   dbConn();  
  try  
  {  
  conn.openDB("Conn");    
  string   strPlanId   =   Request["Id"];  
  string   strsql="select   sum(a.bnysqzxzjZj)   NeedNum,sum(b.PlanNumber)   PlanNum   from   icDeclare   a,eProcessDB.dbo.XXCYJ_IC   b   where   PlanId   =   '"+strPlanId+"'   and   a.ID=b.ApplyId";  
   
  OleDbDataReader   dbReader   =   conn.getDataReader(strsql);    
  if   (dbReader.Read())  
  {  
  Label   labNeedNum   =   (Label)e.Item.FindControl("NeedNum");  
  labNeedNum.Text   =   dbReader["NeedNum"].ToString();  
   
  Label   labPlanNum   =   (Label)e.Item.FindControl("PlanNum");  
  labPlanNum.Text   =   dbReader["PlanNum"].ToString();  
  }  
  }  
  catch  
  {  
  Response.Write("发生错误!");  
  return;  
  }  
  finally  
  {  
  conn.closeConn();  
  }  
  }  
  }  
  }  
  }  
  Top

10 楼lijianlee(素色人生)回复于 2004-10-11 13:04:32 得分 0

第一个是aspx文件   第二个是cs文件   是很好的例子

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

前台repeater定义:
         <table  border="0" cellpadding="0" cellspacing="1" style="FONT-SIZE:12px"  width="100%" >
    
    <asp:repeater id="rptArticleManage" Runat="server">
     <HeaderTemplate>
      <tr  bgcolor="#FFD9B9">
       <td align="center">选择</td>
       <td align="center">标题</td>       
       <td align="center">频道</td>
       <td align="center">栏目</td>
       <td align="center">二级栏目</td>
       <td align="center">创建时间</td>
       <td align="center">省份</td>
       <td align="center">城市</td>
       <td align="center">编辑</td>
       <td align="center">点击数</td>
       <td align="center">权重</td>
       <td align="center">审核</td>
       <td align="center">操作</td>
      </tr>
     </HeaderTemplate>
     <ItemTemplate>
      <tr bgcolor="#d6dff7">
       <td>        
        <input type="checkbox" id="chkb" runat="server" NAME="chkb">         
        <input type=hidden id="hidCpID" value='<%#DataBinder.Eval(Container.DataItem,"News_ID")%>' runat=server NAME="hidCpID">
        <input type=hidden id="hidUrl" value='<%#DataBinder.Eval(Container.DataItem,"News_Path")%>' runat=server NAME="hidUrl">        
       </td>
       <td><a href='InForDetail.aspx?ID=<%#DataBinder.Eval(Container.DataItem,"News_ID")%>&channel=<%=Request.QueryString["channel"]%>' title="文章标题:<%#DataBinder.Eval(Container.DataItem, "News_Title")%>"  >
       
         <%#useually.getleft(DataBinder.Eval(Container.DataItem, "News_Title").ToString(),20)%>          
        
         </a>
                
       </td>
       <td><%#DataBinder.Eval(Container.DataItem, "Channel_Name")%></td>
       <td><%#DataBinder.Eval(Container.DataItem, "Column_Name")%></td>
       <td><%#DataBinder.Eval(Container.DataItem, "Class1_Name")%></td>
           <td><%#DataBinder.Eval(Container.DataItem, "News_Date")%></td>
       <td><%#DataBinder.Eval(Container.DataItem,"Province")%></td>
       <td><%#DataBinder.Eval(Container.DataItem,"City")%></td>
       <td><%#DataBinder.Eval(Container.DataItem, "News_Edit")%></td>
       <td><%#DataBinder.Eval(Container.DataItem, "Click_Number")%></td>
       <td><%#DataBinder.Eval(Container.DataItem, "News_Weight")%></td>
       <td align="center"><%#DataBinder.Eval(Container.DataItem, "News_Verify").ToString() != "" ? "已审核" : "<span style='color: #ff0033'>未审核</span>"%></td>
       <td align="center"><a href='movechannell.aspx?ID=<%#DataBinder.Eval(Container.DataItem,"News_ID")%>'>转移频道</a></td>
      </tr>
     </ItemTemplate>  
     
     <AlternatingItemTemplate>
          
     <tr bgcolor="#FEFBE0">
                         <td>
       <input type="checkbox" id="chkb" runat="server" NAME="chkb">
       <input type=hidden id="hidCpID" value='<%#DataBinder.Eval(Container.DataItem,"News_ID")%>' runat=server NAME="hidCpID">
       <input type=hidden id="hidUrl" value='<%#DataBinder.Eval(Container.DataItem,"News_Path")%>' runat=server NAME="hidUrl"> 
       </td>
     <td><a href='InForDetail.aspx?ID=<%#DataBinder.Eval(Container.DataItem,"News_ID")%>&channel=<%=Request.QueryString["channel"]%>' title="文章标题:<%#DataBinder.Eval(Container.DataItem, "News_Title")%>"  >
       
         <%#useually.getleft(DataBinder.Eval(Container.DataItem, "News_Title").ToString(),20)%>          
       
        </a>
       </td>
       <td><%#DataBinder.Eval(Container.DataItem, "Channel_Name")%></td>
       <td><%#DataBinder.Eval(Container.DataItem, "Column_Name")%></td>
       <td><%#DataBinder.Eval(Container.DataItem, "Class1_Name")%></td>
           <td><%#DataBinder.Eval(Container.DataItem, "News_Date")%></td>
       <td><%#DataBinder.Eval(Container.DataItem,"Province")%></td>
       <td><%#DataBinder.Eval(Container.DataItem,"City")%></td>
       <td><%#DataBinder.Eval(Container.DataItem, "News_Edit")%></td>
       <td><%#DataBinder.Eval(Container.DataItem, "Click_Number")%></td>
       <td><%#DataBinder.Eval(Container.DataItem, "News_Weight")%></td>
       <td align="center"><%#DataBinder.Eval(Container.DataItem, "News_Verify").ToString() != "" ? "已审核" : "<span style='color: #ff0033'>未审核</span>"%></td>
       <td align="center"><a href='movechannell.aspx?ID=<%#DataBinder.Eval(Container.DataItem,"News_ID")%>'>转移频道</a></td>
       </tr>
     
     </AlternatingItemTemplate>
    
    </asp:repeater>   
    
   </table>
 
后台cs代码:
 
     public string channel;
     public int is_yc;
     public int fenye;
    #region 分页属性
    private int pageSize = 16;
    private int recordCount;
    public int PageCount
    {
        get
        {
            return Convert.ToInt32(ViewState["PageCount"]);
        }
    }
    public int PageSize
    {
        get
        {
            return pageSize;
        }
    }
    public int PageIndex
    {
        get
        {
            return Convert.ToInt32(ViewState["CurrentPage"].ToString());
        }
        set
        {
            ViewState["CurrentPage"] = value;
        }
    }
    public int RecordCount
    {
        get
        {
            return recordCount;
        }
    }
    #endregion
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["hg_loginname"] == null)
        {
            Response.Redirect("../login.aspx");
        }
        else
        {
             channel=Request.QueryString["channel"];
             lb_message.Text = "->" + channel;
        }
        //判断是否具有管理信息的功能
        if (!HasPermission("26"))
        {
            Response.Write("<script>alert('对不起,你不具有管理信息的权限!')</script>");
            Response.Write("<script>history.go(-1);</script>");
         
        }
        if (!IsPostBack)
        {
           //传递存储过程参数的初始化
            ViewState["editor"] = "";
            ViewState["LookOwn"] = "";        //查看登陆用户发布的信息!
            ViewState["LookUnPassed"] = "";   //查看为审核的信息!
            is_yc=0; //查看自主原创的信息!
            ViewState["CurrentPage"] = 0;
            ViewState["PageCount"] = 0;
            ViewState["Keyword"] = "";
            ViewState["editor"] = Session["hg_loginname"].ToString();
            RptDataBind();    
        }
        //为删除按钮添加删除前提示确认脚本
        btnDelete.Attributes.Add(" "return confirm('您真的要删除选定的记录吗?');");
        // 在此处放置用户代码以初始化页面
    }
    #region 数据绑定
    private void RptDataBind()
    {
        SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["dfhgConnString"].ConnectionString);
        SqlCommand cmd = new SqlCommand("InforManage_HuaGong123", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add(new SqlParameter("@PageIndex", SqlDbType.Int));
        cmd.Parameters["@PageIndex"].Value = PageIndex;  //页索引
        cmd.Parameters.Add(new SqlParameter("@PageSize", SqlDbType.Int));
        cmd.Parameters["@PageSize"].Value = PageSize;  //每页记录大小
        cmd.Parameters.Add(new SqlParameter("@RecordCount", SqlDbType.Int));
        cmd.Parameters["@RecordCount"].Direction = ParameterDirection.Output;   //返回--记录总数
        cmd.Parameters.Add(new SqlParameter("@PageCount", SqlDbType.Int));
        cmd.Parameters["@PageCount"].Direction = ParameterDirection.Output;  //返回--总页数
        cmd.Parameters.Add(new SqlParameter("@channel", SqlDbType.NVarChar, 10));
        cmd.Parameters["@channel"].Value = channel; //频道
        cmd.Parameters.Add(new SqlParameter("@editor", SqlDbType.VarChar, 10));
        cmd.Parameters["@editor"].Value = ViewState["editor"];   //添加作者
        cmd.Parameters.Add(new SqlParameter("@lookUnpassed", SqlDbType.Char, 1));
        cmd.Parameters["@lookUnpassed"].Value = ViewState["LookUnPassed"];   //未审核的
        cmd.Parameters.Add(new SqlParameter("@lookOwn", SqlDbType.Char, 1));
        cmd.Parameters["@lookOwn"].Value = ViewState["LookOwn"];     //自己发布的信息
        cmd.Parameters.Add(new SqlParameter("@is_yc", SqlDbType.Bit));
        cmd.Parameters["@is_yc"].Value =is_yc;     //原创的信息
        cmd.Parameters.Add(new SqlParameter("@keyword", SqlDbType.NVarChar, 100));
        cmd.Parameters["@keyword"].Value = ViewState["Keyword"].ToString();   //查询关键字
        try
        {
            cmd.Connection.Open();
            SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            rptArticleManage.DataSource = reader;
            rptArticleManage.DataBind();
            reader.Close();
            recordCount = (int)cmd.Parameters["@RecordCount"].Value;  //记录返回的记录数
            ViewState["PageCount"] = (int)cmd.Parameters["@PageCount"].Value;  //记录返回的页数
            fenye = (int)ViewState["PageCount"];
            cmd.Dispose();
        }
        catch (SqlException ex)
        {
            Response.Write(ex.ToString());
            Response.End();
        }
        SetPagingState();   
    }
    #endregion 
  
    #region 分页导航按钮点击监听事件
    private void LBtnNavigation_Click(object sender, System.EventArgs e)
    {
        LinkButton btn = (LinkButton)sender;
        switch (btn.CommandName)
        {
            case "First":
                PageIndex = 0;
                break;
            case "Prev":
                PageIndex = PageIndex - 1;
                break;
            case "Next":
                PageIndex = PageIndex + 1;
                break;
            case "Last":
                PageIndex = PageCount - 1;
                break;
            case "Go":
                try
                {
                    Convert.ToInt32(txtGo.Text);
                }
                catch
                {
                    return;
                }
                if (Convert.ToInt32(txtGo.Text) < 1)
                {
                    PageIndex = 0;
                }
                else if (Convert.ToInt32(txtGo.Text) > PageCount - 1)
                {
                    PageIndex = PageCount - 1;
                }
                else
                {
                    PageIndex = Convert.ToInt32(txtGo.Text) - 1;
                }
                break;
        }
        RptDataBind();
    }
    #endregion
  
    #region 删除所选信息
    protected void btnDelete_Click1(object sender, EventArgs e)
    {
        SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["dfhgConnString"].ConnectionString);
        SqlCommand cmd = new SqlCommand("InForDelete_HuaGong", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@ID", SqlDbType.Int, 4);   //参数绑定    
        foreach (RepeaterItem item in this.rptArticleManage.Items)
        {
            HtmlInputCheckBox cb = (HtmlInputCheckBox)item.FindControl("chkb");
            HtmlInputHidden hCpID = (HtmlInputHidden)item.FindControl("hidCpID");
            HtmlInputHidden hCpUrl = (HtmlInputHidden)item.FindControl("hidUrl");
            if (cb.Checked == true)
            {
                cmd.Parameters["@ID"].Value = Convert.ToInt32(hCpID.Value);
                string dir = Server.MapPath(("News_hmtl/" + hCpUrl.Value));//用来生成文件夹
                if (File.Exists(dir))
                {
                    File.Delete(dir);
                }
                try
                {   cmd.Connection.Open();
                    cmd.ExecuteNonQuery();
              
                }
                catch (SqlException ex)
                {
                    Response.Write("删除失败,错误信息如下:</br>");
                    Response.Write(ex.ToString());
                    Response.End();
                }
                finally
                {
                    cmd.Connection.Close();
                    cmd.Dispose();
                }
            }
        }
        Response.Write("<script>alert('信息记录删除成功,物理静态文件同时被清除!');</script>");       
        RptDataBind();
    }
    #endregion
    #region 搜索
    private void btnSearch_Click(object sender, System.EventArgs e)
    {
        if (txtKeyword.Text.Trim().Length == 0)
        {
            Response.Write("<script>alert('请输入关键字');</script>");
            RptDataBind();
            return;
        }
        ViewState["Keyword"] = "%" + txtKeyword.Text.Trim() + "%";   //用"存储容器 "--ViewState--存储查询数据
        RptDataBind();
    }
    #endregion 
    #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
        //
        // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
        //
        InitializeComponent();
        base.OnInit(e);
    }
    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
        //this.lb_yc.Click += new System.EventHandler(this.lb_yc);
        this.btnLookUnPassed.Click += new System.EventHandler(this.btnLookUnPassed_Click);
        this.btnSearch.Click += new System.EventHandler(this.btnSearch_Click);
        this.btnLookOwn.Click += new System.EventHandler(this.btnLookOwn_Click);
        this.LBtnFirst.Click += new System.EventHandler(this.LBtnNavigation_Click);
        this.LBtnPrev.Click += new System.EventHandler(this.LBtnNavigation_Click);
        this.LBtnNext.Click += new System.EventHandler(this.LBtnNavigation_Click);
        this.LBtnLast.Click += new System.EventHandler(this.LBtnNavigation_Click);
        this.LBtnGo.Click += new System.EventHandler(this.LBtnNavigation_Click);
        this.Load += new System.EventHandler(this.Page_Load);
    }
    #endregion  
    #region 控制导航按钮或数字的状态
    /// <summary>
    /// 控制导航按钮或数字的状态
    /// </summary>
    public void SetPagingState()
    {
        if (PageCount <= 1)//( RecordCount <= PageSize )//小于等于一页
        {
            this.LBtnFirst.Enabled = false;
            this.LBtnPrev.Enabled = false;
            this.LBtnNext.Enabled = false;
            this.LBtnLast.Enabled = false;
        }
        else //有多页
        {
            if (PageIndex == 0)//当前为第一页
            {
                this.LBtnFirst.Enabled = false;
                this.LBtnPrev.Enabled = false;
                this.LBtnNext.Enabled = true;
                this.LBtnLast.Enabled = true;
            }
            else if (PageIndex == PageCount - 1)//当前为最后页
            {
                this.LBtnFirst.Enabled = true;
                this.LBtnPrev.Enabled = true;
                this.LBtnNext.Enabled = false;
                this.LBtnLast.Enabled = false;
            }
            else //中间页
            {
                this.LBtnFirst.Enabled = true;
                this.LBtnPrev.Enabled = true;
                this.LBtnNext.Enabled = true;
                this.LBtnLast.Enabled = true;
            }
        }
        this.LtlPageSize.Text = PageSize.ToString();
        this.LtlRecordCount.Text = RecordCount.ToString();
        if (RecordCount == 0)
        {
            this.LtlPageCount.Text = "0";
            this.LtlPageIndex.Text = "0";
        }
        else
        {
            this.LtlPageCount.Text = PageCount.ToString();
            this.LtlPageIndex.Text = (PageIndex + 1).ToString();
        }
    }
    #endregion
   
    #region 察看待审核的信息
    private void btnLookUnPassed_Click(object sender, System.EventArgs e)
    {
        ViewState["Keyword"] = "";
        ViewState["LookUnPassed"] = "T";
        ViewState["LookOwn"] = "";
        ViewState["is_yc"] = "";
        is_yc = 0;
        RptDataBind();
    }
    #endregion
    #region 查看自发信息
    private void btnLookOwn_Click(object sender, System.EventArgs e)
    {
        ViewState["Keyword"] = "";
        ViewState["LookUnPassed"] = "";
        ViewState["LookOwn"] = "T";
        is_yc = 0;
        RptDataBind();
    }
    #endregion
    #region 查看原创信息
    protected void lb_yc_Click(object sender, EventArgs e)
    {
        ViewState["Keyword"] = "";
        ViewState["LookUnPassed"] = "";
        ViewState["LookOwn"] = "";
        is_yc = 1;
        RptDataBind();
    }
    #endregion
    #region 判断主体对象是否具有指定的权限
    /// <summary>
    /// 判断主体对象是否具有指定的权限
    /// </summary>
    /// <param name="permName">要进行检查的权限名称</param>
    /// <returns>如果具有指定权限,则返回true,否则返回false</returns>
    private bool HasPermission(string permid)
    {
        ArrayList permissions = (ArrayList)Session["hg_loginname_perlist"];
        if (permissions == null)
            return false;
        foreach (object perm in permissions)
        {
            if (perm.ToString() == permid)
                return true;
        }
        return false;
    }
    #endregion
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

今天看了天轰穿老师的视频,搞了差不多一个下午,终于实现了repeater的手写代码绑定,实现分页和嵌套,代码天老师视频上的代码有些不同,但原理是一样的,开始的时候总是报错,查了差不多半个小时还是没找出错误,那是真的很痛苦,想放弃,但最后还是坚持下来,在经过了1个小时的挣扎,终于找到了错误,原来是自己犯的一个低级错误,把2个OleDbDataAdapter对象错写成同一个OleDbDataAdapter对象的查询结果填充到DataSet的message表跟reply表,应该分别用2个OleDbDataAdapter对象分别填充同一个DataSet的message表跟reply表才对.最后得出一点心得:搞程序一定要有坚持的恒心才行,坚持去学新的技术,坚持去找bug(一个小小的bug可能会耗掉你几天的时间), 绝不能二天打鱼,三天晒网,只有不断地坚持下去才能成功!

Default.aspx
 1<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
 2<%@ Import Namespace="System.Data" %>
 3
 4<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 5
 6<html xmlns="http://www.w3.org/1999/xhtml" >
 7<head runat="server">
 8    <title>Untitled Page</title>
 9</head>
10<body>
11    <form id="form1" runat="server">
12    <div>
13        <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
14        <HeaderTemplate>
15        <table width="500">
16        <tr style="background-color:#ccffcc;">
17        <td>
18        name
19        </td>
20        <td>
21        title
22        </td>
23        <td>
24        content
25        </td>
26        <td>
27        reply
28        </td>
29        </tr>
30        </HeaderTemplate>
31        <ItemTemplate>
32        <tr>
33        <td>
34        <a href='Default1.aspx?id=<%#Eval("id") %>'><%#Eval("name") %></a>
35        </td>
36        <td>
37        <%#Eval("title") %>
38        </td>
39        <td>
40        <%#Eval("content") %>
41        </td>
42        <td>
43            <asp:Repeater ID="Repeater2" runat="server" DataSource='<%# Eval("myrelation")%>'>
44            <ItemTemplate>
45            <%#Eval("[/"replyContent/"]") %>
46            <hr size="2pt"/>
47     
48            <%--<%#DataBinder.Eval(Container.DataItem,"replyTitle") %>--%>
49            </ItemTemplate>
50            </asp:Repeater>
51        </td>
52        </tr>
53        </ItemTemplate>
54        <SeparatorTemplate>
55        <tr>
56        <td colspan="4">
57        <hr size="2pt" />
58        </td>
59        </tr>
60        </SeparatorTemplate>
61        <FooterTemplate>
62        <tr>
63        <td colspan="4" style="font-size:12pt;color:#0099ff; background-color:#e6feda;">
64           共<asp:Label ID="lblpc" runat="server" Text="Label"></asp:Label>页 当前为第<asp:Label ID="lblp"
65               runat="server" Text="Label"></asp:Label>页
66               <asp:HyperLink ID="lpfirst" runat="server">首页</asp:HyperLink>
67               <asp:HyperLink ID="lpprev" runat="server">上一页</asp:HyperLink>
68               <asp:HyperLink ID="lpnext" runat="server">下一页</asp:HyperLink>
69               <asp:HyperLink ID="lplast" runat="server">末页</asp:HyperLink>     
70        </td>
71        </tr>
72        </table>
73        </FooterTemplate>
74        </asp:Repeater>
75        &nbsp;
76   
77    </div>
78    </form>
 
Default.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;


public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Repeater1.DataSource = pds();//通过类PagedDataSource来实现分页,pds()方法返回一个类PagedDataSource的对象pds
            Repeater1.DataBind();
        }
    }
    private PagedDataSource pds()
    {
        string connectionString = "provider=microsoft.jet.oledb.4.0;data source=D:/WebSites/Repeater/App_Data/student.mdb";
        OleDbConnection myConnetion = new OleDbConnection(connectionString);
        OleDbDataAdapter oda = new OleDbDataAdapter("select * from message", myConnetion);
        DataSet ds = new DataSet();
        oda.Fill(ds, "message");
        OleDbDataAdapter oda2 = new OleDbDataAdapter("select * from reply", myConnetion);
        oda2.Fill(ds, "reply");
        ds.Relations.Add("myrelation",ds.Tables["message"].Columns["id"],ds.Tables["reply"].Columns["id"]);//新增一个关系myrelation把表message和reply通过字段id连接起来
        PagedDataSource pds=new PagedDataSource();
        pds.DataSource=ds.Tables["message"].DefaultView;
        pds.AllowPaging=true;//允许分页
        pds.PageSize=2;//分页数
        pds.CurrentPageIndex=Convert.ToInt32(Request.QueryString["page"]);//当前页CurrentPageIndex,通过获得传来的参数page来设置
        return pds;
    }

    protected void Repeater1_ItemDataCommand(object source, RepeaterCommandEventArgs e)
    {

    }
    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Footer)
        {
            int n = Convert.ToInt32( pds().PageCount);//n为分页数
            int i = Convert.ToInt32(pds().CurrentPageIndex);//i为当前页
            Label lblpc =(Label) e.Item.FindControl("lblpc");
            lblpc.Text = n.ToString();
            Label lblp = (Label)e.Item.FindControl("lblp");
            lblp.Text = Convert.ToString(pds().CurrentPageIndex+1);

            HyperLink lpfirst = (HyperLink)e.Item.FindControl("lpfirst");
            HyperLink lpprev = (HyperLink)e.Item.FindControl("lpprev");
            HyperLink lpnext = (HyperLink)e.Item.FindControl("lpnext");
            HyperLink lplast = (HyperLink)e.Item.FindControl("lplast");
            lpfirst.NavigateUrl = "?page=0";//向Default.aspx(就是本页)传递参数page
            lplast.NavigateUrl = "?page="+(n-1);

            if (i <= 0)
            {
                lpfirst.Enabled = false;
                lpprev.Enabled = false;
                lplast.Enabled = true;
                lpnext.Enabled = true;
            }
            else
            {
                lpprev.NavigateUrl = "?page=" + (i - 1);
            }
            if (i >= n - 1)
            {
                lpfirst.Enabled = true;
                lplast.Enabled = false;
                lpnext.Enabled = false;
                lpprev.Enabled = true;
            }
            else
            {
                lpnext.NavigateUrl = "?page=" + (i + 1);
            }
         }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值