日期:2014-05-18  浏览次数:20458 次

(200分请教)ObjectDataSource绑定GridView 的问题~有请|思归|等高手光临!
问题如下:
我用了俩ObjectDataSource 数据源。 动态绑定到一个GridView !!!
代码下:
  if (radBtnRole.Checked)
  {
  this.gvFill.DataSourceID = this.objRole.ID;
  this.gvFill.DataKeyNames = dataKey;
  this.gvFill.AutoGenerateColumns = true;
  this.gvFill.DataBind();
  this.gvFill.HeaderRow.Cells[0].Text = "编辑";
  this.gvFill.HeaderRow.Cells[1].Text = "编号";
  this.gvFill.HeaderRow.Cells[2].Text = "角色名称";
  this.gvFill.HeaderRow.Cells[3].Text = "角色ID";
  Page.ClientScript.RegisterStartupScript(this.GetType(), "hideUser", strJS);
  }
  else
  {
  this.gvFill.DataSourceID = this.objUser.ID;
  this.gvFill.DataKeyNames = dataKey1;
  this.gvFill.AutoGenerateColumns = true;
  this.gvFill.DataBind();
  this.gvFill.HeaderRow.Cells[0].Text = "编辑";
  this.gvFill.HeaderRow.Cells[1].Text = "编号";
  this.gvFill.HeaderRow.Cells[2].Text = "用户名";
  this.gvFill.HeaderRow.Cells[3].Text = "密码";
  this.gvFill.HeaderRow.Cells[4].Text = "角色";
  this.gvFill.HeaderRow.Cells[5].Text = "呢称";
  Page.ClientScript.RegisterStartupScript(this.GetType(), "hideRole", strJS1);
  }

因为需要, 我要动态的使用代码 将其列的标题修改掉,或者将其列隐藏掉!!!
正常情况下应该是这样就能 改掉的 !(以上代码 也能改,但是不能访问列!)
this.gvFill.Columns[0].HeaderText = "ceshi";
但是报错了``` 我也知道错误 出在哪里!(测试得到结果this.gvFill.Columns.Count这个值居然为0,但是GridView 显示出来的列远远大于0啊);

请问哪位 达人 来解决这个问题呀``` 怎么才能动态的 隐藏列啊~~~(代码都是动态绑定,动态生成字段的)!
谢谢了! 
(处女帖)只能给100 不好意思,解决了加啊~

------解决方案--------------------
datagrid隐藏一列

// ItemCreated 事件中
protected void DataGrid1_ItemCreated(Object sender, DataGridItemEventArgs e) 
{
 
e.Item.Cells[1].Attributs.Add("style","display:none");
 
}
------解决方案--------------------
晕死,都不知道你两个裤衩怎么来的,两个GV的话,还不是一样,DATAVIEW应该也有个DATAMANBER的属性吧,我英语不好,可能会拼错,你自己查下MSDN,有详细说明的
------解决方案--------------------
晕,一下代码,执行成功。。。
-------------------------------
C# code
    protected void Page_Load(object sender, EventArgs e)
    {     
       if (!IsPostBack)
       {
            this.GridView3.DataSourceID = ObjectDataSource1.ID;
            //this.GridView3.DataKeyNames = dataKey;
            this.GridView3.AutoGenerateColumns = true;
            this.GridView3.DataBind(); 
        }
     }
    protected void GridView3_RowCreated(object sender, GridViewRowEventArgs e)
    {
        e.Row.Cells[0].Visible = false;
    }