请教gridview中使用ddl重新绑定数据的问题

windstore 2007-03-21 01:02:42
我用gridview想实现以下功能。
默认显示的是所有的数据。。。
然后在页面有个dropdownlist(不在gridview中),当我选择后 显示该大类的所有数据。

那么我在dropdownlist的事件中重新为ID为database的DataSource 指定了selectcommand语句,然后为gridview重新绑定了database..

现在的问题是。。。
点击DDL的大类后显示第一页正常。。点击下一页就错。。比如一共两页。。第一页正常。。第二页不但没有数据。分页显示的也错了 成了 2/1(应该是2/2)

代码如下:
<asp:GridView ID="gridview_article" runat="server" AutoGenerateColumns="False" DataSourceID="database"
EmptyDataText="无记录" GridLines="None" CssClass="cTable table tCenter" AllowPaging="true" PageSize="16" OnDataBound="gridview_article_databound">
</gridview>

<asp:SqlDataSource ID="database" runat="server" ConnectionString="<%$ ConnectionStrings:databaseConnectionString %>"
ProviderName="<%$ ConnectionStrings:databaseConnectionString.ProviderName %>">
<SelectParameters>
<asp:ControlParameter ControlID="Big_Column" PropertyName="SelectedItem.Value" Name="FirstColumnNum" />
<asp:ControlParameter ControlID="Son_Column" PropertyName="SelectedItem.Value" Name="SecondColumnNum" />
</SelectParameters>
</asp:SqlDataSource>

cs页面
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//指定database默认的selectcommand语句
database.SelectCommand = "SELECT [num],LEFT(Title,15) as Title, [FirstColumnNum],[FirstColumnName],[Times], [IssueDate] FROM [Article]";
}
Button_First.CommandName="1";
Button_Next.CommandName=(gridview_article.PageCount==1 ? gridview_article.PageCount.ToString() : Convert.ToString((gridview_article.PageIndex+2)));
Button_Pre.CommandName=(gridview_article.PageIndex==0 ? "1" : gridview_article.PageIndex.ToString());
Button_Last.CommandName=gridview_article.PageCount.ToString();
}
//分页LinkButton
protected void PagerButtonClick(object sender,EventArgs e)
{
gridview_article.PageIndex=Convert.ToInt32(((LinkButton)sender).CommandName)-1;
}

//databound事件
protected void gridview_article_databound(object sender, EventArgs e)
{
Label1.Text = Convert.ToString((gridview_article.PageIndex + 1));
Label2.Text = gridview_article.PageCount.ToString();
if (Label2.Text == "0")
{
Label2.Text = "1";
}
}
//顶部大类文章下拉框的数据绑定
protected void Big_Column_select(object sender, EventArgs e)
{
database.SelectCommand = "SELECT [num],[Title], [FirstColumnNum],[FirstColumnName], [Times], [IssueDate] FROM [Article] where FirstColumnNum=@FirstColumnNum";
gridview_article.DataSourceID = "database";
}
...全文
444 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
windstore 2007-03-21
  • 打赏
  • 举报
回复
晚上结贴!
windstore 2007-03-21
  • 打赏
  • 举报
回复
谢谢大家!问题解决了。。
问题就是gridview每页面加载一次就要重新绑定datasourceID 问题就在这里。。。如果在页面中指定的话,就不能动态改变。。所以要在page_load程序动态绑定。。
public static string select_command;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//首次加载默认的selectcommand
select_command = "SELECT [num],LEFT(Title,15) as Title, [FirstColumnNum],[FirstColumnName],[Times], [IssueDate] FROM [Article]";
}
database.SelectCommand = select_command;
gridview_article.DataSourceID = "database";
}

这样 在其他函数种重新指定selectcommand就可以了
forlens 2007-03-21
  • 打赏
  • 举报
回复
ding!
windstore 2007-03-21
  • 打赏
  • 举报
回复
经过调试发现第一页都显示正常,并且DDL的Value也没有丢,但是单击下一页后。。好像绑定的东西都没了。。我写两个response.
发现gridview_article.PageCount成了0 好像是点击"下一页"后分页绑定没了
windstore 2007-03-21
  • 打赏
  • 举报
回复
to:silentwins(原谅我当天不懂得珍惜只知任性...)

ispostback这里是有点问题。。因为 ispostback外面的话 。显示所有的就正常了。。但是 选择下拉框的大类后,显示某大类的东西不正常,第一页的页面对呢 1/2 单击下一页,就跑到显示所有文章的了 比如 2/7 ..所以我把默认的selecomaand方到ispostback里了。因为他要变,如果放到外面的话 一刷新页面又绑定成大类的了
windstore 2007-03-21
  • 打赏
  • 举报
回复
to:xray2005

我按照你的方法弄了个隐藏的控件还是不行。。。

现在的问题是 不dan选择DDL下的大类不正常。。首次打开该网页,默认显示所有的 也是第一页正常 第二页就变成 2/1 什么也不显示
ziyulin0311 2007-03-21
  • 打赏
  • 举报
回复
幫,頂
xray2005 2007-03-21
  • 打赏
  • 举报
回复
是因为你翻页的时候,dropdownlist的selectvalue没有保持.

我一般的做法是:
把dropdownlist的selectvalue放在一个隐藏的控件里,在数据绑定和翻页的时候,根据这个隐藏的控件的text值来重新绑定gridview
ranzige 2007-03-21
  • 打赏
  • 举报
回复
http://blog.csdn.net/ranzige/ 看看有没有你想要的。
silentwins 2007-03-21
  • 打赏
  • 举报
回复
大多数都是Page_Load里面的IsPostBack问题,你调试一下程序,看执行到哪里导致这样的错误嘛~~~
windstore 2007-03-21
  • 打赏
  • 举报
回复
人都那里去了?

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧