我想利用下拉列表框,实现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();      
    }

解决方案 »

  1.   

    假如你第一次选择下拉之后执行
     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;
                }
    这个时候,你再次的绑定了数据,