大家好!关于datalist 分页问题,很奇怪!急!


我在2个类似的页面中,代码基本相同,有小幅度的不同。
如下图
这是第一个页面,datalist分页显示正常。

第二个页面出问题了,直接跳转进入第2个页面,如果取消分页,datalist数据显示正常。
我加入datalist分页,进来后显示会空白


但是如果输入1,点击跳转到第一页会正常显示。

第2个页面代码跟第一个相同的,我copy的,怎么会出现这种情况。
大神帮忙分析下。。。

我觉得是一开始停留的页面有问题么?

9 个解决方案

#1


检查一下第二个页面的pageload

#2


代码如下、、


page.aspx

<asp:DataList ID="DataListHuoList" runat="server" width="510" cellspacing="0" cellpadding="0" BorderStyle="none">

    <ItemTemplate>

        <%#  DataBinder.Eval(Container.DataItem, "字段") %>

    </ItemTemplate>

</asp:DataList>

<table width="510" border="0" cellspacing="0" cellpadding="0">

    <tr>

        <td class="font">

            <asp:LinkButton ID="linkbtnone" runat="server" OnClick="linkbtnone_Click">第一页</asp:LinkButton>

            <asp:LinkButton ID="linkbtnpre" runat="server" OnClick="linkbtnpre_Click">上一页</asp:LinkButton>

            <asp:LinkButton ID="linkbtnnext" runat="server" OnClick="linkbtnnext_Click">下一页</asp:LinkButton>

            <asp:LinkButton ID="linkbtnlast" runat="server" OnClick="linkbtnlast_Click">最后一页</asp:LinkButton>

            <asp:Label ID="labcp" runat="server"></asp:Label>[<asp:Label ID="labpage" runat="server" Text="1"></asp:Label>/<asp:Label ID="labtp" runat="server"></asp:Label>]

            <asp:Label ID="labgoto" runat="server" Text="转到:"></asp:Label>

            <asp:TextBox ID="txtgo" runat="server" Height="15px" Width="30px"></asp:TextBox>页

            <asp:Button ID="BtnGo" runat="server" Text="GO" Width="36px" OnClick="BtnGo_Click" />                                    

        </td>

    </tr>

</table>

page.aspx.cs

public partial class huodong : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            BindHuoList(25);           

        }

    }

    //绑定

      private void BindHuoList(int length)

      {

        DataSet ds = new DataSet();
        string sql = "select * from Information  ";
        SqlCommand scd = new SqlCommand(sql, DbHelperSQL.conn);
        SqlDataAdapter da = new SqlDataAdapter(scd);
        da.Fill(ds, "Information");
        DataTable dtHuoList = ds.Tables["Information"]; //获取数据

        DataTable dtHuoList = ;//获取数据

        string strLength;

        for (int i = 0; i < dtHuoList.Rows.Count; i++)

        {

            strLength = dtHuoList.Rows[i]["article_title"].ToString();

            if (strLength.Length > length)

            {

                dtHuoList.Rows[i]["article_title"] = (Object)strLength.Substring(0, length);

            }

        }

        this.txtgo.Text = "";

        int curpage = Convert.ToInt32(this.labpage.Text);

        PagedDataSource ps = new PagedDataSource();   //定义PagedDataSource对象

        ps.DataSource = dtHuoList.DefaultView;  //取出数据到datatable中,赋给PagedDataSource对象

        ps.AllowPaging = true;  //是否可以分页

        ps.PageSize = 16; //显示的数量

        ps.CurrentPageIndex = curpage - 1; //取得当前页的页码,PagedDataSource的CurrentPageIndex是从0开始

        this.linkbtnone.Enabled = true;

        this.linkbtnpre.Enabled = true;

        this.linkbtnnext.Enabled = true;

        this.linkbtnlast.Enabled = true;

        if (curpage == 1)

        {

            this.linkbtnone.Enabled = false;

            this.linkbtnpre.Enabled = false;

        }

        if (curpage == ps.PageCount)

        {

            this.linkbtnnext.Enabled = false;

            this.linkbtnlast.Enabled = false;

        }

        this.labtp.Text = Convert.ToString(ps.PageCount);  //显示分页数量

        this.DataListHuoList.DataSource = ps;   //绑定DataList控件

        this.DataListHuoList.DataKeyField = "article_id";

        this.DataListHuoList.DataBind();

   //第一页

    protected void linkbtnone_Click(object sender, EventArgs e)

    {

        this.labpage.Text = "1";

        BindHuoList(25);

    }

    //上一页

    protected void linkbtnpre_Click(object sender, EventArgs e)

    {

        this.labpage.Text = Convert.ToString(Convert.ToInt32(this.labpage.Text) - 1);

        BindHuoList(25);

    }

    //下一页

    protected void linkbtnnext_Click(object sender, EventArgs e)

    {

        this.labpage.Text = Convert.ToString(Convert.ToInt32(this.labpage.Text) + 1);

        BindHuoList(25);

    }

    //最后一页

    protected void linkbtnlast_Click(object sender, EventArgs e)

    {

        this.labpage.Text = this.labtp.Text;

        BindHuoList(25);

    }

    //跳转按钮

    protected void BtnGo_Click(object sender, EventArgs e)

    {

        this.labpage.Text = this.txtgo.Text;

        BindHuoList(25);

    }

}

#3


引用 1 楼 hjywyj 的回复:
检查一下第二个页面的pageload

 protected void Page_Load(object sender, EventArgs e)
    {
        TextBox2.Focus();
        if (!IsPostBack)
       {
           BindHuoList(25);   
           
        
       }
        lbl_title1.Text = Session["title"].ToString();
       lbl_com_cn.Text = Session["com_cn"].ToString();
       lbl_name.Text = Session["name"].ToString();
       lbl_consult.Text = Session["consult"].ToString();
       
       
       
        string sql = @"server=xxx;database=sx;user id=sa;password=xxx1;";
        string ssSql = " update consult set condition = '未回答' update consult set condition = '已回答' where  reply is not null ";
        SqlConnection connn = new SqlConnection();
        connn.ConnectionString = sql;
        SqlCommand cmdd = new SqlCommand();
        cmdd.CommandText = ssSql;
        cmdd.Connection = connn;   
        connn.Open();
        cmdd.ExecuteNonQuery();
        connn.Close();   
    }


之前第一个页面很干净,没session和后面那段update刷新页面的。。。

#4


代码在3楼 2楼代码是分页的,应该没什么问题

#5


session里不是放的是共用的数据吗?
相当于是静态的。翻页有影响吧。
asp.net的好久没用快忘了。。。

#6


调试一下 ,传递参数 是否正确。

#7


引用 6 楼 claymore1114 的回复:
调试一下 ,传递参数 是否正确。

我用session传递的
lbl_title1.Text = Session["title"].ToString();
lbl_com_cn.Text = Session["com_cn"].ToString();

sql语句string sSql2 = "select id,Title,Date,condition,appraise from consult where Title = '"+ lbl_title1.Text +"' and company ='"+lbl_com_cn.Text+"' order by Date desc";  用传递来的参数,调取sql里的数据。

是不是不用能session

#8


引用 5 楼 lye2000000_super 的回复:
session里不是放的是共用的数据吗?
相当于是静态的。翻页有影响吧。
asp.net的好久没用快忘了。。。



那用啥呀。。。

#9


引用 8 楼 yebikong 的回复:
引用 5 楼 lye2000000_super 的回复:session里不是放的是共用的数据吗?
相当于是静态的。翻页有影响吧。
asp.net的好久没用快忘了。。。


那用啥呀。。。


引用 7 楼 yebikong 的回复:
引用 6 楼 claymore1114 的回复:调试一下 ,传递参数 是否正确。
我用session传递的
lbl_title1.Text = Session["title"].ToString();
lbl_com_cn.Text = Session["com_cn"].ToString();

sql语句string sSql2 = "select id,T……



引用 楼主 yebikong 的回复:
我在2个类似的页面中,代码基本相同,有小幅度的不同。
如下图
这是第一个页面,datalist分页显示正常。

第二个页面出问题了,直接跳转进入第2个页面,如果取消分页,datalist数据显示正常。
我加入datalist分页,进来后显示会空白


但是如果输入1,点击跳转到第一页会正常显示。

第2个页面代码跟第一个相同的,我copy的,怎么会出现……



我发现问题所在了,

page_load中,session传递要放在is postback之前。。先传递完。

然后再   if (!IsPostBack)
       {
           BindHuoList(25);   
             
       }
       
否则传递过来的参数,因为我用此参数调取数据库数据,所以如果不先传,后面的datalist为空白。怪不得。。。
智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告