当我按条件搜索的时候,比如我选择了计算机行业搜索,有2页,点击下一页的时候提示if (hangye.ToString() == "" && pro.ToString() == "" && city.ToString() == "" && key.ToString() == "")未将对象引用到对象的实例
下面是按条件搜索和分页的代码,点击下一页的时候又执行了result()里面的代码,如何保持上一页的查询状态?在线等private void result()
{
if (hangye.ToString() == "" && pro.ToString() == "" && city.ToString() == "" && key.ToString() == "")
{
Response.Write("<script>alert('请选择搜索条件!');history.go(-1);</script>");
}
else
{
string sql = "";
PagedDataSource ps = new PagedDataSource();
SqlConnection con = new SqlConnection(conn);
con.Open();
//按行业搜索
if (hangye.ToString() != "")
{
sql = "select * from com_info where hangye='" + hangye + "' order by updatetime desc";
}
//按行业和地区搜索
if (hangye.ToString() != "" && city.ToString() != "")
{
sql = "select * from com_info where hangye='" + hangye + "' and city='" + city + "' order by updatetime desc";
}
//按地区搜索
if (city.ToString() != "")
{
sql = "select * from com_info where city='" + city + "' order by updatetime desc";
}
//按关键字搜索
if (key.ToString() != "")
{
sql = "select * from com_info where com_name like '%" + key + "%' order by updatetime desc";
}
if (hangye.ToString()!="" && city.ToString()!="" && key.ToString() != "")
{
sql = "select * from com_info where hangye='"+hangye+"' and city='"+city+"' and com_name like '&"+key+"&' order by updatetime desc";
}
SqlDataAdapter sda = new SqlDataAdapter(sql, con);
DataSet ds = new DataSet();
sda.Fill(ds,"com_info");
ps.DataSource = ds.Tables["com_info"].DefaultView;
ps.AllowPaging = true;
ps.PageSize = 10;
ps.CurrentPageIndex = Convert.ToInt32(ViewState["cur"]);
lblpageindex.Text = Convert.ToString(ps.CurrentPageIndex + 1);
lblpagecount.Text = ps.PageCount.ToString();
lkbtnfirst.Enabled = true;
lkbtnup.Enabled = true;
lkbtnnext.Enabled = true;
lkbtnlast.Enabled = true;
if (ps.IsFirstPage)
{
lkbtnfirst.Enabled = false;
lkbtnup.Enabled = false;
}
if (ps.IsLastPage)
{
lkbtnnext.Enabled = false;
lkbtnlast.Enabled = false;
}
dl_result.DataSource = ps;
dl_result.DataBind();
con.Close();
}
}
protected void lkbfirst_Click(object sender, EventArgs e)
{
ViewState["cur"] = 0;
result();
}
protected void lkbup_Click(object sender, EventArgs e)
{
ViewState["cur"] = Convert.ToInt32(ViewState["cur"]) - 1;
result();
}
protected void lkbnext_Click(object sender, EventArgs e)
{
ViewState["cur"] = Convert.ToInt32(ViewState["cur"]) + 1;
result();
}
protected void lkblast_Click(object sender, EventArgs e)
{
ViewState["cur"] = Convert.ToString(Convert.ToInt32(lblpagecount.Text) - 1);
result();
}
下面是按条件搜索和分页的代码,点击下一页的时候又执行了result()里面的代码,如何保持上一页的查询状态?在线等private void result()
{
if (hangye.ToString() == "" && pro.ToString() == "" && city.ToString() == "" && key.ToString() == "")
{
Response.Write("<script>alert('请选择搜索条件!');history.go(-1);</script>");
}
else
{
string sql = "";
PagedDataSource ps = new PagedDataSource();
SqlConnection con = new SqlConnection(conn);
con.Open();
//按行业搜索
if (hangye.ToString() != "")
{
sql = "select * from com_info where hangye='" + hangye + "' order by updatetime desc";
}
//按行业和地区搜索
if (hangye.ToString() != "" && city.ToString() != "")
{
sql = "select * from com_info where hangye='" + hangye + "' and city='" + city + "' order by updatetime desc";
}
//按地区搜索
if (city.ToString() != "")
{
sql = "select * from com_info where city='" + city + "' order by updatetime desc";
}
//按关键字搜索
if (key.ToString() != "")
{
sql = "select * from com_info where com_name like '%" + key + "%' order by updatetime desc";
}
if (hangye.ToString()!="" && city.ToString()!="" && key.ToString() != "")
{
sql = "select * from com_info where hangye='"+hangye+"' and city='"+city+"' and com_name like '&"+key+"&' order by updatetime desc";
}
SqlDataAdapter sda = new SqlDataAdapter(sql, con);
DataSet ds = new DataSet();
sda.Fill(ds,"com_info");
ps.DataSource = ds.Tables["com_info"].DefaultView;
ps.AllowPaging = true;
ps.PageSize = 10;
ps.CurrentPageIndex = Convert.ToInt32(ViewState["cur"]);
lblpageindex.Text = Convert.ToString(ps.CurrentPageIndex + 1);
lblpagecount.Text = ps.PageCount.ToString();
lkbtnfirst.Enabled = true;
lkbtnup.Enabled = true;
lkbtnnext.Enabled = true;
lkbtnlast.Enabled = true;
if (ps.IsFirstPage)
{
lkbtnfirst.Enabled = false;
lkbtnup.Enabled = false;
}
if (ps.IsLastPage)
{
lkbtnnext.Enabled = false;
lkbtnlast.Enabled = false;
}
dl_result.DataSource = ps;
dl_result.DataBind();
con.Close();
}
}
protected void lkbfirst_Click(object sender, EventArgs e)
{
ViewState["cur"] = 0;
result();
}
protected void lkbup_Click(object sender, EventArgs e)
{
ViewState["cur"] = Convert.ToInt32(ViewState["cur"]) - 1;
result();
}
protected void lkbnext_Click(object sender, EventArgs e)
{
ViewState["cur"] = Convert.ToInt32(ViewState["cur"]) + 1;
result();
}
protected void lkblast_Click(object sender, EventArgs e)
{
ViewState["cur"] = Convert.ToString(Convert.ToInt32(lblpagecount.Text) - 1);
result();
}
解决方案 »
- 连发3贴,为解决一个基础问题,CSDN浪得虚名,高手少的可怜
- 问一个关于petshop4 中sqlhelper的问题!
- msdn的中文版出错
- 问一个关于三层架构的问题
- 根据数字返回汉字的方法?
- 如何删除 多余 font标记 .net中
- 在asp.net中如何获得Excel中的数据信息?
- 你们平时做那种动态的条形图、折线图和饼图都用得是什么控件?进来就有分!
- 属性在RenderContents的时候保存到ViewState里面好不好?
- 我在站点下有index.aspx,还有一个目录叫pic,我要调用pic\1.jpg,相对路径怎么写呀?
- 考验各位大哥的难题:多线程中如何获取虚拟目录路径?谢谢。。。
- 操作CSS
if (hangye.ToString() == "" && pro.ToString() == "" && city.ToString() == "" && key.ToString() == "")
除了可能等于""外,还有一种可能是等于null,
当页面回传时肯定会在次执行result()
之所以又回到第一页,是因为在次执行了result()里的dl_result.DataBind();,
也就是从新绑定了一次,当然又会显示第一页,
可以考虑使用IsPostBack()判断是否为第一次请求,
该怎么处理自己想吧.