(在线等待)通过下拉列表,动态隐藏gridview表头和相应的列的问题

xiayunlong123 2009-03-11 03:20:16
我想利用下拉列表框,实现gridview的表头和列的动态隐藏。我是实现了,但是每次选择的时候,列表中却没有显示值,只有第一次选择的时候有,不解,附上代码

protected void ddlDeviceInfo_SelectedIndexChanged(object sender, EventArgs e)
{
if (ddlDeviceInfo.SelectedItem.Text == "设备状态")
{
bind();
gvwDeviceInfo.Columns[0].Visible = true;
gvwDeviceInfo.Columns[1].Visible = false;
gvwDeviceInfo.Columns[2].Visible = false;
gvwDeviceInfo.Columns[3].Visible = false;


gvwDeviceInfo.HeaderRow.Cells[1].Visible = false;
gvwDeviceInfo.HeaderRow.Cells[2].Visible = false;
gvwDeviceInfo.HeaderRow.Cells[3].Visible = false;
}
else if (ddlDeviceInfo.SelectedItem.Text == "设备产权")
{
bind();
gvwDeviceInfo.Columns[0].Visible = false;
gvwDeviceInfo.Columns[1].Visible = true;
gvwDeviceInfo.Columns[2].Visible = false;
gvwDeviceInfo.Columns[3].Visible = false;

gvwDeviceInfo.HeaderRow.Cells[0].Visible = false;
gvwDeviceInfo.HeaderRow.Cells[2].Visible = false;
gvwDeviceInfo.HeaderRow.Cells[3].Visible = false;


}
else if (ddlDeviceInfo.SelectedItem.Text == "设备类别")
{
bind();
gvwDeviceInfo.Columns[0].Visible = false;
gvwDeviceInfo.Columns[1].Visible = false;
gvwDeviceInfo.Columns[2].Visible = true;
gvwDeviceInfo.Columns[3].Visible = false;

gvwDeviceInfo.HeaderRow.Cells[0].Visible = false;
gvwDeviceInfo.HeaderRow.Cells[1].Visible = false;
gvwDeviceInfo.HeaderRow.Cells[3].Visible = false;


}
else if (ddlDeviceInfo.SelectedItem.Text == "设备名称")
{
bind();
gvwDeviceInfo.Columns[0].Visible = false;
gvwDeviceInfo.Columns[1].Visible = false;
gvwDeviceInfo.Columns[2].Visible = false;
gvwDeviceInfo.Columns[3].Visible = true;

gvwDeviceInfo.HeaderRow.Cells[0].Visible = false;
gvwDeviceInfo.HeaderRow.Cells[1].Visible = false;
gvwDeviceInfo.HeaderRow.Cells[2].Visible = false;


}

}

public void bind()
{
IList dev = Info.FindAll();
gvwDeviceInfo.DataSource = dev;
gvwDeviceInfo.DataKeyNames = new string[] { "Id" };
gvwDeviceInfo.DataBind();
}
...全文
211 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangniao 2009-03-11
  • 打赏
  • 举报
回复
假如你第一次选择下拉之后执行
if (ddlDeviceInfo.SelectedItem.Text == "设备状态")
{
bind();
gvwDeviceInfo.Columns[0].Visible = true;
gvwDeviceInfo.Columns[1].Visible = false;
gvwDeviceInfo.Columns[2].Visible = false;
gvwDeviceInfo.Columns[3].Visible = false;


gvwDeviceInfo.HeaderRow.Cells[1].Visible = false;
gvwDeviceInfo.HeaderRow.Cells[2].Visible = false;
gvwDeviceInfo.HeaderRow.Cells[3].Visible = false;
}
执行这里,现在就是说这个gridview里边是有东西了,当你再执行下拉之后,执行
else if (ddlDeviceInfo.SelectedItem.Text == "设备产权")
{
bind();
gvwDeviceInfo.Columns[0].Visible = false;
gvwDeviceInfo.Columns[1].Visible = true;
gvwDeviceInfo.Columns[2].Visible = false;
gvwDeviceInfo.Columns[3].Visible = false;

gvwDeviceInfo.HeaderRow.Cells[0].Visible = false;
gvwDeviceInfo.HeaderRow.Cells[2].Visible = false;
gvwDeviceInfo.HeaderRow.Cells[3].Visible = false;


}
这个时候,你再次的绑定了数据,
yangniao 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yangniao 的回复:]
你在更改了下拉列表之后数据要重新绑定一次,试试看怎么样
[/Quote]
发错。没看到数据绑定,不好意思,
yangniao 2009-03-11
  • 打赏
  • 举报
回复
你在更改了下拉列表之后数据要重新绑定一次,试试看怎么样
nbgcqlk 2009-03-11
  • 打赏
  • 举报
回复
isPostBack

62,268

社区成员

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

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

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

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