我想利用下拉列表框,实现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();
}
{
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();
}
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;
}
这个时候,你再次的绑定了数据,