heyjob.net 招聘网开发日志 之 搜索页(aspnetpager+存储过程分页)

一个通宵到现在,其实要做的不多,难再算法方面,还有页面的样式,一改再改,没办法,写了几个hack,终于兼容ie678,ff,chrome,至于opera和safari那些非主流浏览器直接忽略不计。。

使用了存储过程+视图,2个表,一个是职位表,一个是公司表,代码以后还会继续优化!

初步效果图: 这个是全文搜索 (职位名+职位描述+公司名)

 

页面传值

 

js
<script type="text/javascript">
function search_job(){
var tkey = "";
var rbt = "";
var hpro = "";
var hct = "";
var hjt = "";
var hpr = "";
var dcn = "";
var dcn = "";
var dir = "";
var dcs = "";
var dvd = "";
var dwm = "";
var dei = "";
var dwr = "";

    tkey  
= escape($("#txtkey").val()); //关键字 
  
   
//搜索类型
    if($("#rbt2").attr("checked"== true)
      rbt 
= "1";  
    
if($("#rbt3").attr("checked"== true)
      rbt 
= "2";     
     
    
if($("#hidprovince").val() != "不限")
      hpro 
= $("#hidprovince").val();       //省id
    if($("#hidcity").val() != "不限")
      hct 
= $("#hidcity").val();             //市id
    if($("#hidjobt2").val() != "不限")
      hjt 
= $("#hidjobt2").val();            //职位id
    if($("#hidprop").val() != "不限")
      hpr 
= $("#hidprop").val();             //行业id
    
    
if($("#ddlCONature").val() != "不限")
      dcn  
= escape($("#ddlCONature").val()); //公司性质   
    if($("#ddlIncomeRange").val() != "不限")
      dir 
= escape($("#ddlIncomeRange").val()); //薪酬范围
    if($("#ddlCoScale").val() != "不限")
      dcs 
= escape($("#ddlCoScale").val()); //公司规模
    if($("#slvldday").val() != "")
      dvd 
= $("#slvldday").val();            //发布时间
    if($("#ddlWorkMode").val() != "不限")
      dwm 
= escape($("#ddlWorkMode").val()); //职位性质
    if($("#ddlEduID").val() != "不限")
      dei 
= escape($("#ddlEduID").val());   //学历
    if($("#ddlWorkRange").val() != "不限")
      dwr 
= escape($("#ddlWorkRange").val()); //工作经验
      
   urlstr 
= "search_index.aspx?show=result&tkey="+ tkey + "&rbt=" +rbt + "&hpro="+ hpro + "&hct=" + hct + "&hjt=" + hjt + "&hpr=" + hpr + "&dir=" + dir + "&dcn=" + dcn + "&dcs=" + dcs + "&dvd=" + dvd + "&dwm=" + dwm + "&dei=" + dei + "&dwr=" + dwr;
   window.location.href 
=(urlstr); 


}


</script>

 

 

aspx.cs页代码

 

后台代码
    protected void Page_Load(object sender, EventArgs e)
    {
        
if (!IsPostBack)
        {
            
if (Request.QueryString["show"!= null)
            {
                
string show = Request.QueryString["show"].ToString();
                
if (show == "ct"//地区
                { BindArea(); }
                
else if (show == "jt"//职位
                { BindJobT(); }
                
else if (show == "pr"//行业
                { BindProp(); }
                
else if (show == "result"//搜索结果
                {
                    
string tkey = Server.UrlDecode(Request.QueryString["tkey"]);
                    
string searchType = Request.QueryString["rbt"];
                    
string provinceId = Request.QueryString["hpro"];
                    
string cityId = Request.QueryString["hct"];
                    
string jobtypeId = Request.QueryString["hjt"];
                    
string proId = Request.QueryString["hpr"];
                    
string coNature = Server.UrlDecode(Request.QueryString["dcn"]);
                    
string incomeRange = Server.UrlDecode(Request.QueryString["dir"]);
                    
string coScale = Server.UrlDecode(Request.QueryString["dcs"]);
                    
string vldDay = Request.QueryString["dvd"];
                    
string workMode = Server.UrlDecode(Request.QueryString["dwm"]);
                    
string eduId = Server.UrlDecode(Request.QueryString["dei"]);
                    
string workRange = Server.UrlDecode(Request.QueryString["dwr"]);

                    
if (searchType != "")
                    {
                        strWhere 
+= " and (JobName like \'%" + tkey + "%\' or JobDescription like \'%" + tkey + "%\') ";

                        
if (searchType == "1")
                        {
                            strWhere 
+= " and JobName like \'%" + tkey + "%\'";
                        }
                        
else
                        {
                            strWhere 
+= " and CoName like \'%" + tkey + "%\'";
                        }
                    }
                    
if (provinceId != "")
                    {
                        
if (cityId == "0")
                        {
                            strWhere 
+= "  and ProvinceID=" + provinceId + "and cityid <> 0";
                        }
                        
else
                        {
                            strWhere 
+= "  and ProvinceID=" + provinceId + " and cityid=" + cityId;
                        }
                    }
                    
if (jobtypeId != "")
                    {
                        strWhere 
+= " and JobTypeID=" + jobtypeId;
                    }
                    
if (proId != "")
                    {
                        strWhere 
+= " and ProTypeID=" + proId;
                    }
                    
if (coNature != "")
                    {
                        strWhere 
+= " and CoNatureID='" + coNature + "'"
                    }
                    
if (incomeRange != "")
                    {
                        strWhere 
+= " and IncomeRange='" + incomeRange + "'"
                    }
                    
if (workRange != "")
                    {
                        strWhere 
+= " and WorkRange='" + workRange + "'"
                    }
                    
if (eduId != "")
                    {
                        strWhere 
+= " and EduID='" + eduId + "'"
                    }
                    
if (coScale != "")
                    {
                        strWhere 
+= " and CoScale='" + coScale + "'"
                    }
                    
if (workMode != "")
                    {
                        strWhere 
+= " and WorkMode='" + workMode + "'";
                    }                    

                    
if (vldDay != "")
                    {
                        strWhere 
+= " and postdate > dateadd(day,-" + vldDay + ",getDate()) and postdate < getDate()";
                    }

                    BindData();
                }
            }
        }
    }

protected void anp1_PageChanged(object sender, EventArgs e)
    { 
        
int pageCount, RecordCount;
        rpt1.DataSource 
= bllJob.GetPage(anp1.CurrentPageIndex, PageSize, "", strWhere, out pageCount, out RecordCount);
        rpt1.DataBind();
    }

 

 

数据访问层,服务器上的是sql2000,存储过程,所以没用05的方法

 

DAL
 public IList<heyjob.Model.b_Job> GetPage(int pageindex, int _pageSize, string strField, string strWhere, out int pageCount, out int RecordCount)
        {
            pageCount 
= 0;
            RecordCount 
= 0;
            
          
            IList
<heyjob.Model.b_Job> list = new List<heyjob.Model.b_Job>();

            
using (SqlConnection conn = new SqlConnection(PubConstant.ConnectionString))
            {
                SqlCommand objcmd 
= new SqlCommand(".ThePSPIsAllPurposeNotIn", conn);
                objcmd.CommandType 
= CommandType.StoredProcedure;
                SqlParameter[] para 
=
                
new SqlParameter("@tblName",SqlDbType.VarChar,-1),
                
new SqlParameter("@fldName",SqlDbType.VarChar,-1),
                
new SqlParameter("@pageSize",SqlDbType.Int),
                
new SqlParameter("@page",SqlDbType.Int),
                
new SqlParameter("@fldSort",SqlDbType.VarChar,-1),
                
new SqlParameter("@Sort",SqlDbType.Bit),
                
new SqlParameter("@strCondition",SqlDbType.VarChar),
                
new SqlParameter("@ID",SqlDbType.VarChar,-1),
                
new SqlParameter("@pageCount",SqlDbType.Int),
                
new SqlParameter("@Counts",SqlDbType.Int),
                
new SqlParameter("@Dist",SqlDbType.VarChar,-1)
            };

                para[
0].Value = "view_search";
                para[
1].Value = "*";
                para[
2].Value = _pageSize;
                para[
3].Value = pageindex;
                para[
4].Value = "PostDate";
                para[
5].Value = 1;
                para[
6].Value = strWhere;
                para[
7].Value = "JobID";
                para[
8].Value = pageCount;
                para[
8].Direction = ParameterDirection.Output;
                para[
9].Value = RecordCount;
                para[
9].Direction = ParameterDirection.Output;
                para[
10].Value = 0;

                objcmd.Parameters.AddRange(para);

                conn.Open();
                
using (SqlDataReader reader = objcmd.ExecuteReader(CommandBehavior.CloseConnection))
                {
                    
while (reader.Read())
                    {
                        heyjob.Model.b_Job model 
= new heyjob.Model.b_Job();
                        model.JobID 
= Convert.ToInt32(reader["JobID"]);
                        model.JobName 
= Convert.ToString(reader["JobName"]);
                        model.ProvinceID 
= Convert.ToInt32(reader["ProvinceID"]);
                        model.CityID 
= Convert.ToInt32(reader["CityID"]);
                        model.ProTypeID 
= Convert.ToInt32(reader["ProTypeID"]);
                        model.JobTypeID 
= Convert.ToInt32(reader["JobTypeID"]);
                        model.State 
= Convert.ToInt32(reader["State"]);
                        model.VldDay 
= Convert.ToInt32(reader["VldDay"]);
                        model.JobDescription 
= Convert.ToString(reader["JobDescription"]);
                        model.WorkMode 
= Convert.ToString(reader["WorkMode"]);
                        model.IncomeRange 
= Convert.ToString(reader["IncomeRange"]);
                        model.EduID 
= Convert.ToString(reader["EduID"]);
                        model.PostDate 
= Convert.ToDateTime(reader["PostDate"]);
              
             //model里临时加的公司表的xxx
                        model.CoSetID 
= Convert.ToInt32(reader["CoSetID"]);
                        model.CoName 
= Convert.ToString(reader["CoName"]);
                        model.CoScale 
= Convert.ToString(reader["CoScale"]);
                        model.CoNatureID 
= Convert.ToString(reader["CoNatureID"]);
                        list.Add(model);
                    }
                }

                RecordCount 
= Convert.ToInt32(objcmd.Parameters["@Counts"].Value);
                pageCount 
= Convert.ToInt32(objcmd.Parameters["@pageCount"].Value);

                conn.Close();
                conn.Dispose();
            }
            
return list;
        }

 

 

存储过程不贴了,sql关掉了,机器烂。。开起卡的很。。睡觉了,好累!睡醒起来做url重写以及职位详情和公司详情的模板。。。人生啊,就是这么累,累并快乐着!

posted @ 2010-04-02 10:26  左右期限  阅读(311)  评论(0编辑  收藏  举报