日期:2014-05-17  浏览次数:20532 次

asp.net 关于DataSet隐藏列的问题。
protected void Page_Load(object sender, EventArgs e)
  {
  if (!IsPostBack)
  {
  DataSet ds = GetData();
  if (ds.Tables.Count > 0)
  {
  //给DataSet中字段取别名
  ds.Tables[0].Columns["sno"].ColumnName = "学号";
  ds.Tables[0].Columns["sname"].ColumnName = "姓名";
  ds.Tables[0].Columns["ssex"].ColumnName = "性别";
  ds.Tables[0].Columns["sage"].ColumnName = "年龄";
  ds.Tables[0].Columns["sdept"].ColumnName = "专业";
  //第一种方法隐藏列
  //ds.Tables[0].Columns[0].ColumnMapping = MappingType.Hidden;
  GridView1.DataSource = ds;
  GridView1.DataBind();
  //第二种方法隐藏列
  //GridView1.Columns[0].Visible = false;
  }
  else
  {
  string scriptString = "alert('没有可显示的数据!');";
  Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "success", scriptString, true);
  }
  }
  }
  public DataSet GetData()
  {
  string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
  SqlConnection conn = new SqlConnection(connectionString);
  conn.Open();
  SqlDataAdapter adapter = new SqlDataAdapter("select * from student", conn);
  DataSet dataset = new DataSet();
  adapter.Fill(dataset);
  conn.Close();
  return dataset;
  }

第一种方法是在DataSet中隐藏列,然后绑定到GridView上,但是没有效果。第二种方法是先将DataSet绑定到GridView上,然后设置GridView某列是否显示为false,出错——索引超出范围。求解!!!!!

------解决方案--------------------
GridView设置隐藏列是可以的,在绑定事件里面进行设置
e.Row.Cells[0].Visible = false;