代码很简单,页面中就一个文本框、一个按钮、一个DataGrid,查询后第一页显示数据正常,但点其它分页按钮时就显示成了全部的数据和全部的页码而不是查询的那些数据!!! .aspx.csDataView getdataview(string sql, string strtable) 

OleDbDataAdapter myDataAdapter; 
DataSet myDataSet; 
myconn.Open(); 
myDataAdapter = new OleDbDataAdapter(sql, myconn); 
myconn.Close(); 
myDataSet = new DataSet(); 
myDataAdapter.Fill(myDataSet, strtable); 
return myDataSet.Tables[strtable].DefaultView;
}void bindgrid() 

string sql="SELECT title from table where title like '%" + searchkey + "%'";
DataView zhuanti=getdataview(sql,"zhuanti");
DataGrid1.DataSource=zhuanti;
DataGrid1.DataBind ();
}private void Button1_Click(object sender, System.EventArgs e)
{
searchkey=Page.Request["search"].Trim();
bindgrid();
}private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DataGrid1.CurrentPageIndex = e.NewPageIndex; 
bindgrid();
}
.aspx<form id="Form1" method="post" runat="server">
<asp:datagrid id="DataGrid1"  runat="server" AutoGenerateColumns="False" AllowPaging="True">
<Columns>
<asp:BoundColumn DataField="title"></asp:BoundColumn>
</Columns>
<PagerStyle Mode="NumericPages"></PagerStyle>
</asp:datagrid>
<asp:button id="Button1" runat="server" Text="Button"></asp:button>
<asp:textbox id="search" runat="server"></asp:textbox>
</form>

解决方案 »

  1.   

    很简单,类似多表查询,只要把CurrentPageIndex清0再绑一次数据即可
      

  2.   

    DataGrid1.CurrentPageIndex = e.NewPageIndex;
    this.bindgrid();
      

  3.   

    这是我写得分页
    private void likFirst_Click(object sender, System.EventArgs e)
    {
    dtgUserInfo.CurrentPageIndex = 0;
    this.Bind();
    } private void likLast_Click(object sender, System.EventArgs e)
    {
    //如果不是首页
    if(dtgUserInfo.CurrentPageIndex>0)
    {
    dtgUserInfo.CurrentPageIndex--;
    this.Bind();
    }
    } private void likNext_Click(object sender, System.EventArgs e)
    {
    //如果不是末页
    if(dtgUserInfo.CurrentPageIndex<dtgUserInfo.PageCount-1)
    {
    dtgUserInfo.CurrentPageIndex++;
    this.Bind();
    }
    } private void likEnd_Click(object sender, System.EventArgs e)
    {
    dtgUserInfo.CurrentPageIndex = dtgUserInfo.PageCount-1;
    this.Bind();
    }
      

  4.   

    DataGrid1.CurrentPageIndex = e.NewPageIndex;
    this.bindgrid();
    -----------------
    这个我给的代码中已经有了啊
      

  5.   

    你的searchkey是哪里定义的啊,根本就没有赋值给sql语句,你检查一下吧。
      

  6.   

    你的searchkey是哪里定义的啊,根本就没有赋值给sql语句,你检查一下吧。
    ------------------------------------------------
    在这啊,点击按钮后开始查询,后再梆定
    private void Button1_Click(object sender, System.EventArgs e)
    {
    searchkey=Page.Request["search"].Trim();
    bindgrid();
    }
      

  7.   

    搞错了,你的代码在分页后,searchkey的值不见了,你可以调试一下,你可以把searchkey的值装在ViewState里面
      

  8.   

    搞错了,你的代码在分页后,searchkey的值不见了,你可以调试一下,你可以把searchkey的值装在ViewState里面
    ------------
    什么意思啊??小弟是菜鸟,,请详细说说啊。。ViewState是什么呢
      

  9.   

    我帮你改你的代码啦,肯定可以解决的。
    DataView getdataview(string sql, string strtable) 

    OleDbDataAdapter myDataAdapter; 
    DataSet myDataSet; 
    myconn.Open(); 
    myDataAdapter = new OleDbDataAdapter(sql, myconn); 
    myconn.Close(); 
    myDataSet = new DataSet(); 
    myDataAdapter.Fill(myDataSet, strtable); 
    return myDataSet.Tables[strtable].DefaultView;
    }void bindgrid() 

    string searchkey=ViewState["searchkey"].ToString();//这里读取查询关键字
    string sql="SELECT title from table where title like '%" + searchkey + "%'";
    DataView zhuanti=getdataview(sql,"zhuanti");
    DataGrid1.DataSource=zhuanti;
    DataGrid1.DataBind ();
    }private void Button1_Click(object sender, System.EventArgs e)
    {
    ViewState["searchkey"]=Page.Request["search"].Trim(); //保存查询关键字
    bindgrid();
    }private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {
    DataGrid1.CurrentPageIndex = e.NewPageIndex; 
    bindgrid();
    }
    .aspx<form id="Form1" method="post" runat="server">
    <asp:datagrid id="DataGrid1"  runat="server" AutoGenerateColumns="False" AllowPaging="True">
    <Columns>
    <asp:BoundColumn DataField="title"></asp:BoundColumn>
    </Columns>
    <PagerStyle Mode="NumericPages"></PagerStyle>
    </asp:datagrid>
    <asp:button id="Button1" runat="server" Text="Button"></asp:button>
    <asp:textbox id="search" runat="server"></asp:textbox>
    </form>
      

  10.   

    非常感谢haidazi() 啊!!!按你的办法可以用了,但我还有些问题是我要查询的字段有好几个上面我省略了,主要有 企业名称、法人名称、编号、地址等几个,按这个方法我要分别存在ViewState["..."]中然后再查询,这样做法行不行?我对ViewState不了解,菜鸟~,然后就是就是我的代码错在什么地方了??请再指教一下!!!不好意思了
      

  11.   

    因为你只在触发按扭事件才赋值给searchkey变量。这样每次回传之后searchkey的值变为空值啊,用viewstate把那些关键字装起来当然行啦。建议你应该买本书看看。
      

  12.   

    haidazi() :非常感谢你啊!!!只是分有点少对不住你啦!!这个问题搞了我几天了~~~