如题!主要是实现一开始不显示----当编辑的时候显示此列,编辑完毕后继续隐藏

解决方案 »

  1.   

    1. 开始不显示 方法:模板列中的控件 
        代码如下:
                    <asp:TemplateField>
                      <EditItemTemplate>
                          <asp:TextBox ID="txtEffectName" runat="server" Text='<%#Eval("EffectName") %>'></asp:TextBox>
                      </EditItemTemplate>
                      <ItemTemplate>
                      </ItemTemplate>
                    </asp:TemplateField>
         注:在GridView中必须绑定表的主键ID  DataKeyNames="EffectId"
    2. 当编辑的时候 在 RowEditing事件中 
       找到模板中那个的控件    成功例子:
            //编辑
            protected void GridView_ProductEffect_RowEditing(object sender, GridViewEditEventArgs e)
            {
                //找到编辑的模板列
                this.GridView_ProductEffect.EditIndex = e.NewEditIndex;
                bindProductEffect();//绑定数据源    
            }
    3.在更新的事件 RowUpdating事件中
               //更新
            protected void GridView_ProductEffect_RowUpdating(object sender, GridViewUpdateEventArgs e)
            {
                int pid = Convert.ToInt32(this.GridView_ProductEffect.DataKeys[e.RowIndex].Value);
                Product_Effect pe = Product_EffectUtility_Sup.GetById(pid, false);
                string EffectName = ((TextBox)this.GridView_ProductEffect.Rows[e.RowIndex].Cells[1].FindControl("txtEffectName")).Text.ToString();
                pe.EffectName = EffectName;
                Product_EffectUtility_Sup.Update(pe);
                Response.Write(string.Format(JsHelper.WINALERTSCRIPT, "更新成功!"));
                this.GridView_ProductEffect_RowCancelingEdit(null,null);
                bindProductEffect(); //绑定数据源 
            }
    -----------------这样就能够实现了!------------------------
      

  2.   

    4. 对了还有一个取消编辑事件
               //取消编辑
            protected void GridView_ProductEffect_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
            {
                this.GridView_ProductEffect.EditIndex = -1;
                bindProductEffect();
            }
      

  3.   


    wuxiupeng
     
    (狼) 
    谢谢你代码不过貌似没有回答我的问题,
    要动态[显示/隐藏]指定的列【页面刚开始不显示此列,编辑的时候显示此列,编辑完毕时 再次隐藏此列】
      

  4.   

    指定culomn的 visible
    不是这样吗?
      

  5.   

    不就是模板列编辑吗? 你在EditItemTemplate中多加个控件就是了!没啥好多说的!
      

  6.   

    在rowdatabound中控制列的隐藏,至于编辑的时候显示,没有试过,不能直接控制吗?
      

  7.   

    在数据绑定的时候执行隐藏列。 也就是在rowdatebound中。
    在单击修改时,在这个方法里面设置你需要修改的行中的原来隐藏的列再显示就行了。
    只给了思路,源代码自己去写吧!
      

  8.   

    在绑定每一行的事件里面将其隐藏visble=false;。 在编辑事件的时候让其visble=true;
      

  9.   


    除了这位说话不看的题的人 各位网友的回答我非常感谢,其实是很简单, chenjianyong94 回答的很简答 但是我最终实现也就是这样的思路如下:       //在绑定数据的时候传入hd_flag标志,让css控制指定列的隐藏于显示
            if (hd_flag == "Y")
            {
                GridView1.Columns[3].ItemStyle.CssClass = "diply";
                GridView1.Columns[3].FooterStyle.CssClass = "diply";
                GridView1.Columns[3].HeaderStyle.CssClass = "diply";
            }
            else
            {
                GridView1.Columns[3].ItemStyle.CssClass = "hiden";
                GridView1.Columns[3].FooterStyle.CssClass = "hiden";
                GridView1.Columns[3].HeaderStyle.CssClass = "hiden";
            }