RadioListBox相当于是一个筛选器,比如可以查看“未通过名单”“通过名单”“所有名单”,然后单击一个选项就可用查看相应的一些数据,RadioListBox已经AutoPostBack了。 数据绑定用的是Repeater来显示的。翻页的用的是Lable超链接,当我单击翻页链接的时候,本来地址是xxx.aspx?topage=2&npage=通过名单,表示我要查看第二页的通过名单的数据,可是一点击翻页后,RadioListBox就初始化到“所有名单”了,显示数据也变成了第二页的所有数据的东西了xxx.aspx?topage=2&npage=所有名单…… 现在求高手帮我解决这个问题,如何翻页后还是显示的当前的RadioListBox的所有数据???困扰我两天了……以下是本菜鸟的代码,如果高手有更好的代码也可以指教一二 DataSet ds = new DataSet();
string npage = q("npage");
string switchRB1 = RB1.SelectedValue; int PageSize = 2;
int PageCount, RecordCount;
int ToPage = Convert.ToInt32(Request.QueryString["ToPage"]);
string pagesql = null, sql = null;
switch (switchRB1)
{
case "未通过审核":
sql = "select count(id) from Company_Basemeans where isPast='未通过'";
break;
case "通过审核":
sql = "select count(id) from Company_Basemeans where isPast='通过'";
break;
case "企业总数":
sql = "select count(id) from Company_Basemeans";
break;
case "申请图招":
sql = "select count(id) from Company_Basemeans where piczp = '申请通过图招'";
break;
}
string sqlstr = ConfigurationManager.ConnectionStrings["0745Job"].ToString();
SqlConnection conn = new SqlConnection(sqlstr);
SqlCommand MyComm = new SqlCommand(sql, conn);
conn.Open();
RecordCount = Convert.ToInt32(MyComm.ExecuteScalar());
conn.Close(); if (RecordCount % PageSize != 0)
{
PageCount = RecordCount / PageSize + 1;
}
else
{
PageCount = RecordCount / PageSize;
} if (ToPage == Convert.ToInt32(null))
{
ToPage = 1;
} if (ToPage > PageCount)
{
ToPage = PageCount;
}
if (ToPage <= 1)
{
switch (switchRB1)
{
case "未通过审核":
pagesql = "select....";
break;
case "通过审核":
pagesql = "select....";
break;
case "企业总数":
pagesql = "select....";
break;
case "申请图招":
pagesql = "select....";
break;
}
}
else
{
switch (switchRB1)
{
case "未通过审核":
pagesql = "select....";
break;
case "通过审核":
pagesql = "select....";
break;
case "企业总数":
pagesql = "select....";
break;
case "申请图招":
pagesql = "select...."
break;
}
}
if (ToPage <= 1)
{
LinkPrev.Enabled = false;
Linkhead.Enabled = false;
CurrentPage.Text = "1";
}
else
{
LinkPrev.Enabled = true;
LinkPrev.NavigateUrl = "?ToPage=" + (ToPage - 1) + "&npage=" + switchRB1;
Linkhead.Enabled = true;
Linkhead.NavigateUrl = "?ToPage=1&npage=" + switchRB1;
}
if (ToPage >= PageCount)
{
LinkFoot.Enabled = false;
LinkNext.Enabled = false;
CurrentPage.Text = PageCount.ToString();
}
else
{
LinkFoot.Enabled = true;
LinkFoot.NavigateUrl = "?ToPage=" + PageCount + "&npage=" + switchRB1;
LinkNext.Enabled = true;
LinkNext.NavigateUrl = "?ToPage=" + (ToPage + 1) + "&npage=" + switchRB1;
}
//**********************Label控件绑定**********************
TotalPage.Text = Convert.ToString(PageCount);
CurrentPage.Text = Convert.ToString(ToPage);
LbRecord.Text = RecordCount.ToString();
LbPageRecord.Text = PageSize.ToString();
//**********************数据绑定**********************
SqlDataAdapter da = new SqlDataAdapter(pagesql, conn);
da.Fill(ds, "ShowPage"); RP1.DataSource = ds.Tables["ShowPage"].DefaultView;
RP1.DataBind();
string npage = q("npage");
string switchRB1 = RB1.SelectedValue; int PageSize = 2;
int PageCount, RecordCount;
int ToPage = Convert.ToInt32(Request.QueryString["ToPage"]);
string pagesql = null, sql = null;
switch (switchRB1)
{
case "未通过审核":
sql = "select count(id) from Company_Basemeans where isPast='未通过'";
break;
case "通过审核":
sql = "select count(id) from Company_Basemeans where isPast='通过'";
break;
case "企业总数":
sql = "select count(id) from Company_Basemeans";
break;
case "申请图招":
sql = "select count(id) from Company_Basemeans where piczp = '申请通过图招'";
break;
}
string sqlstr = ConfigurationManager.ConnectionStrings["0745Job"].ToString();
SqlConnection conn = new SqlConnection(sqlstr);
SqlCommand MyComm = new SqlCommand(sql, conn);
conn.Open();
RecordCount = Convert.ToInt32(MyComm.ExecuteScalar());
conn.Close(); if (RecordCount % PageSize != 0)
{
PageCount = RecordCount / PageSize + 1;
}
else
{
PageCount = RecordCount / PageSize;
} if (ToPage == Convert.ToInt32(null))
{
ToPage = 1;
} if (ToPage > PageCount)
{
ToPage = PageCount;
}
if (ToPage <= 1)
{
switch (switchRB1)
{
case "未通过审核":
pagesql = "select....";
break;
case "通过审核":
pagesql = "select....";
break;
case "企业总数":
pagesql = "select....";
break;
case "申请图招":
pagesql = "select....";
break;
}
}
else
{
switch (switchRB1)
{
case "未通过审核":
pagesql = "select....";
break;
case "通过审核":
pagesql = "select....";
break;
case "企业总数":
pagesql = "select....";
break;
case "申请图招":
pagesql = "select...."
break;
}
}
if (ToPage <= 1)
{
LinkPrev.Enabled = false;
Linkhead.Enabled = false;
CurrentPage.Text = "1";
}
else
{
LinkPrev.Enabled = true;
LinkPrev.NavigateUrl = "?ToPage=" + (ToPage - 1) + "&npage=" + switchRB1;
Linkhead.Enabled = true;
Linkhead.NavigateUrl = "?ToPage=1&npage=" + switchRB1;
}
if (ToPage >= PageCount)
{
LinkFoot.Enabled = false;
LinkNext.Enabled = false;
CurrentPage.Text = PageCount.ToString();
}
else
{
LinkFoot.Enabled = true;
LinkFoot.NavigateUrl = "?ToPage=" + PageCount + "&npage=" + switchRB1;
LinkNext.Enabled = true;
LinkNext.NavigateUrl = "?ToPage=" + (ToPage + 1) + "&npage=" + switchRB1;
}
//**********************Label控件绑定**********************
TotalPage.Text = Convert.ToString(PageCount);
CurrentPage.Text = Convert.ToString(ToPage);
LbRecord.Text = RecordCount.ToString();
LbPageRecord.Text = PageSize.ToString();
//**********************数据绑定**********************
SqlDataAdapter da = new SqlDataAdapter(pagesql, conn);
da.Fill(ds, "ShowPage"); RP1.DataSource = ds.Tables["ShowPage"].DefaultView;
RP1.DataBind();
如:select top m * from myTable where id not in(select top n id from myTable) --m>n
若m=40,n=20,则显示的是第 21-40 条记录
由于是本页刷新,可使用ViewState记住一些值或状态2 自己写一个封闭分页的表格控件,传送数据源即能自动实现[推荐],网上亦有参考代码
使用Get传值或其他(如ViewState)传值
如:
page_load
{
string switchRB1 = Request.QueryString["npage"];
if(switchRB1 !=null) {
RB1.SelectedValue = switchRB1 ;//不过这样有点安全问题,最好改成循环items的,我这里懒得写了
}
}
另外,radiobuttonlist的value最好不要用中文
去找有一片文章符合你的要求
谢谢这位大哥的帮忙,不过孟子那里面的都是基本的分页而已,并没有用到RadioListBox或者DropDownList等控件对分页内容进行筛选的例子……还请麻烦了
楼主可以看看是否有帮助
http://blog.csdn.net/amandag/archive/2008/07/19/2677316.aspx
看看这个有没有帮助
function gotopage( n )
{
document.getElementById("pagenum").value = n; /* pagenum 是一个隐藏控件 ×/
Form1.submit();
}
function gotofirst()
{
gotopage( 1 );
}
function gotolast()
{
gotopage( 1000000 );
}
function gotopre()
{
gotopage( parseInt( document.getElementById("pagenum").value ) - 1 );
}
function gotonext()
{
gotopage( parseInt( document.getElementById("pagenum").value ) + 1 );
}
</script>服务器端:在Page_Load中处理转到第几页及其它功能。这样就不会被初始化了。总结: 在处理换页、筛选、排序、验证等情况的时候,不要用地址后面加参数的方式传递信息,因为这样会打开一个新页,所有的控件都会被初始化,有时可能有几十个控件,都用Session记录的话,要把它们读出来,还要填回去,很麻烦。正确的方法就是用提交submit(),或者用.net的事件,这样的话各个控件就能够保持原来的状态。希望对你有帮助。