2011-06-30 60 views
1

我有一个GridView,asp.net的GridView动态绑定

<asp:GridView ID="managerList" runat="server" DataSourceID="SqlDataSource2"> 
在后面的代码

protected void Page_Load(object sender, EventArgs e) 
{ 
    SqlDataSource2.SelectCommand = "select * from manager"; 
    managerList.AllowPaging = true; 
} 

当我加载网页,它工作正常,分页工作正常了。

然后我想通过点击来获得在搜索按钮列表的子集:

protected void btnSearch_Click(object sender, EventArgs e) 
{ 
    SqlDataSource2.SelectCommand = "select * from manager where age > 30"; 
    managerList.DataBind(); 
} 

它工作得很好,给我列表的子集。

然而,当我“下一页”点击,它给我的整个列表,网页#2。我知道这是因为它发送回发,并且它绑定了原始的选择命令。但是,当我点击“下一页”时,我怎么能给我列表的子集?

谢谢!

更新: 如果我改变代码到这一点:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
    SqlDataSource2.SelectCommand = "select * from manager"; 
    managerList.AllowPaging = true; 
    } 
} 

它给了我,当我点击“下一页”的空列表。

他很可能添加的IsPostBack,但这不能正常工作。

回答

2

添加NewPageIndex代码PageIndexChanging事件:

managerList.PageIndex = e.NewPageIndex; 
bindgrid(); 
0

的Page_Load火灾每次加载页面时,包括回传,这样你的SELECT语句越来越复位时间。尝试设置视图状态值以保持您的选择语句。

1

下面可以帮助你

protected void Page_Load(object sender, EventArgs e) 
{ 
if (!IsPostBack) 
    { 
    SqlDataSource2.SelectCommand = "select * from manager"; 
    managerList.AllowPaging = true; 
    } 

} 
+0

没有也不会。当我点击“下一页”时,它会给我一个空的列表。 – sbs

+0

什么是你的代码里面PageIndexChanging – Saurabh

+0

什么都没有..我应该在PageIndexChanging中添加什么? – sbs

1

你需要把你的代码在Page_Load事件!IsPostBack()下。像...

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
    SqlDataSource2.SelectCommand = "select * from manager"; 
    managerList.AllowPaging = true; 
    } 
} 

原因:每当你点击下一步按钮,你的页面加载事件的GridView的PageIndexChanging事件处理程序之前调用。

0

存储最新的SQL查询中一个全局静态字符串,然后使用下面的代码。

static String previousSQL_Query; 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(IsPostBack) 
    { 
    SqlDataSource2.SelectCommand = previousSQL_Query; 
    } 
    else 
    { 
     SqlDataSource2.SelectCommand = "select * from manager"; 
     managerList.AllowPaging = true; 
    } 
} 

protected void btnSearch_Click(object sender, EventArgs e) 
{ 
    SqlDataSource2.SelectCommand = "select * from manager where age > 30"; 
    previousSQL_Query = SqlDataSource2.SelectCommand; 
    managerList.DataBind(); 
}