protected void gdv_RowEditing(object sender, GridViewEditEventArgs e)
{
 string s =    gdv.Rows[e.NewEditIndex].Cells[1].Text;
}
但是这样取不到,如何才能取到?

解决方案 »

  1.   

    如果这个column是隐藏的,使用这种方法是取不到的,试试去数据源中取
      

  2.   

    你要是把控件本身隐藏了 一定会取不到
     建议你用CSS 样式去隐藏它
    这样不影响你外观
    而且后台也能取到值
      

  3.   

    用input隐藏控件。然后。find找到该项隐藏控件
      

  4.   

    把要隐藏的列的值放HiddenField里面,从HiddenField取就可以
      

  5.   

    你可以用这种隐藏方式    //隐藏字段
        protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[1].Visible = false;
            }
        }
    然后再取值
    string s = gdv.Rows[i].Cells[1].Text.Replace(" ", "");
      

  6.   

    页面
    <asp:TemplateField Visible="False">
    <ItemTemplate>
    <asp:Label ID="Label1" runat="server" Text='<%# Bind("EmailSetId") %>'></asp:Label>
    </ItemTemplate>
    </asp:TemplateField>
    后台
    long indexId = Convert.ToInt32(((Label)row.Cells[0].FindControl("Label1")).Text.Trim());
      

  7.   

    先在前台用Label绑定数据字段值
    <asp:TemplateField Visible="false">
       <ItemTemplate>
           <asp:Label ID="slblDesignerID" runat="server" Text='<%# Eval("DesignerID")%>' ></asp:Label>
       </ItemTemplate>
    </asp:TemplateField>
    在事件里面 
    Label ctr =((Label)(gdv.Rows[e.NewEditIndex].Cells[1].FindControl("slblDesignerID")));
    然后 ctr.Text 就是值了 
      

  8.   

    说取不到值的都是扯蛋的,又不是前端JS取值.如12楼所说,只要用FindControl即可.其实所谓的隐藏也只是骗一下客户端的显示而已,真正的资料还是发送到了客户端,被放至在ViewState的那一段里面的.
      

  9.   

    FindControl效率上感觉会比较差一点楼主的这个问题我昨晚也碰到过,解决方法如下:把要隐藏的列移到最后一列(假设这是第10列),然后设置它的cssclass为hid,在这个页面上方写一个CSS的类
    <style type="text/css">
    .hid
    {
        display:none;
    }
    </style>gdv.Rows[e.NewEditIndex].Cells[9].Text;因为如果你把这一列的visible设成false,取出来的Text绝对是空的
      

  10.   

    个人觉得有两种办法,一是用18楼说的隐藏控件 也就是用模板列<HiddenField> 将值写到<HiddenField>中
                <asp:GridView ID="gvd" runat ="server" >
                    <Columns>
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:HiddenField ID="hfield" runat ="server"/>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                    <PagerStyle Wrap="True" />
                </asp:GridView>二是对GridView的数据源进行处理 把不显示的数据不绑定在GridView就行了,需要的时候操作数据源就行了.        //增加一列即可 绑定时选择自己需要的列进行绑定
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DataRow dr = Publicdt.NewRow();
                dr[0] = dt.Rows[i][0];
                dr[1] = dt.Rows[i][1];
                dr[2] = dt.Rows[i][2];
                dr[3] = dt.Rows[i][3];
                dr[4] = dt.Rows[i][4];
                dr[5] = dt.Rows[i][5];
                dr[6] = dt.Rows[i][6];
                dr[7] = FnStateChange(Convert.ToInt32(dt.Rows[i][5].ToString()));
                Publicdt.Rows.Add(dr);
            }
      

  11.   

    如果这个隐藏列的值是在前端需要有变化的,那么在当前页面行模板里面加入一个HiddenField,然后后台去取这个HiddenField的值即可。如果值是固定不变的,不受前端的影响,比如说该行的ID值,那直接在e.Row.Attributes上直接加入一个attribute即可,后台也就是取Attribute
      

  12.   

    <asp:GridView ID="gvd" runat ="server" >
                    <Columns>
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:HiddenField ID="hfield" runat ="server"/>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                    <PagerStyle Wrap="True" />
                </asp:GridView>
    如果是这样隐藏的话,可以这样写获取值 
     HiddenField hidId = (HiddenField)this.GridView1.Rows[e.RowIndex].FindControl("hidId");
    string  id=hidId.Value;
      

  13.   


    <asp:TemplateField HeaderText="供应商代码" SortExpression="Code">
                       <ItemTemplate>
                          <asp:Label ID="lblVendorCode" runat="server" Text='<%#Eval("VendorCode")%>'></asp:Label>
                       </ItemTemplate>                
                        <ItemStyle CssClass="hidden" />
                        <HeaderStyle CssClass="hidden" />
                    </asp:TemplateField><style type="text/css">   
      .hidden   
      {display:none}   
      </style> 
    通过CSS隐藏
    这种方式可以通过
    Label lbl = GridView.Rows[i].FindContrl("lblVendorCode") as Label
    lbl.Text就是你绑定的值
    的方式获取