datagrid绑定两列值,一列为用户名称,一列为用户地址,我想用户地址列隐藏,但是也要生成HTML,因为我要在点用户名的时候弹出用户地址,而用DataGrid1.Columns[1].visible=false;不生成HTML,用JS取不到用户的地址,求救,急啊!!!

解决方案 »

  1.   

    可以这样试试
    <td>用户名称绑顶</td><td id="td1">用户地址绑顶</td>
    把td1隐藏起来就行了
      

  2.   

    <asp:DataGrid ID="DataGrid1" runat="server" AutoGenerateColumns="False" Width="100%" OnItemDataBound="DataGrid1_ItemDataBound" AllowPaging="True" OnPageIndexChanged="DataGrid1_PageIndexChanged" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" OnSelectedIndexChanged="DataGrid1_SelectedIndexChanged" >
                            <Columns>
                                                        <asp:TemplateColumn HeaderText="客户名称">
                                <ItemTemplate>
                                <a href="#"><asp:Label ID="LblUserName" runat="server" Text='<%# Eval("username") %>'></asp:Label></a>
                                </ItemTemplate>
                                    <HeaderStyle Width="100%" />
                               
                                </asp:TemplateColumn>
                                <asp:TemplateColumn>
                               
                                <ItemTemplate>
                                <asp:Label style="display:none" ID="LblUserAdress" runat="server" Text='<%# Eval("address") %>'></asp:Label>
                                </ItemTemplate>
                                    
                                    <ItemStyle Width="0px" CssClass="yincang" />
                                </asp:TemplateColumn>
                            </Columns>
                           
                           
                        </asp:DataGrid>
    这是绑定的代码,我不知道楼上的是什么意思啊!
      

  3.   

    <ItemTemplate><tr><td>
                                <a href="#"><asp:Label ID="LblUserName" runat="server" Text='<%# Eval("username") %>'></asp:Label></a>
    </td><td id="id1">
                                <asp:Label style="display:none" ID="LblUserAdress" runat="server" Text='<%# Eval("address") %>'></asp:Label></td></tr>
                                </ItemTemplate>
    ====================
    然后想办法,把id1隐藏
      

  4.   

    obj.parentElement.parentElement.removeNode(true);
      

  5.   

    DataGrid1.Columns[1].Attributs.Add("style","display:none")
      

  6.   

    int i = 要隐藏的列数;
    DataGrid1.Columns[i].Visible = false;
      

  7.   

    // ItemCreated 事件中
    protected void DataGrid1_ItemCreated(Object sender, DataGridItemEventArgs e) 
       {
     
    e.Item.Cells[1].Attributs.Add("style","display:none");
     
       }
      

  8.   

    // 客户端 CSS 控制隐藏,不安全,毕竟数据还是呈现到客户端了
            e.Row.Cells[3].Style.Add(HtmlTextWriterStyle.Display, "none");
            // 设置单元格隐藏, TableCell.Visible=false, OK
            e.Row.Cells[4].Visible = false;摘自晓风残月摘客
    http://www.cnblogs.com/Jinglecat/archive/2007/07/10/813338.html
      

  9.   

    Visiable=false
    or
    Width=0
    or css display:none;
      

  10.   

    DataGrid1.Columns[1].Attributs.Add("style","display:none")
      

  11.   

    @symbol441(≮西门潇洒≯) 哈,还是没有理解,我文中说的是,针对只需要服务器获取隐藏列的但是,对于客户单需要获取的,就不能 Visible=false 了,此时,该列根本就不呈现到客户端了考虑使用 e.Item.Cells[1].Attributs.Add("style","display:none");个人更喜欢,使用模版列中嵌入 隐藏域 来实现,通过其 id 来访问因为,我总会对 e.Item.Cells[1] 之类的使用 【索引】的避而远之,不便于后期维护,
    比如,后来你前面添加一列,你还得记得同步相关的 索引
      

  12.   

    DataGrid1.Columns[1].Attributs.Add("style","display:none")
      

  13.   

    <style>.hide{display:none;}</style><列 cssClass=".hide" /> 实现隐藏
      

  14.   

    DataGrid1.Columns[1].Attributs.Add("style","display:none")
    DataGridColumns 不包含对Attributs的定义??????
      

  15.   


    DataGrid1.Columns[1].Attributs.Add("style","display:none")
    改成
    DataGrid1.Columns[1].Controls[0].Attributs.Add("style","display:none")
      

  16.   

    DataGrid1.Columns[1].Controls[0]有Controls?
      

  17.   

    DataGrid1.Columns[1].Attributs.Add("style","display:none")要在2005里面采可以??
    2003里面DataGrid1.Columns[1] 后面没有Attributs属性
      

  18.   

    net_lover(【孟子E章】) 
    就是猛
      

  19.   

    可以用模版列加一个HIDDEN把值放那里,想怎么取都行
      

  20.   

    这我肯定知道啊~
    我想确认下在03里面DataGrid1.Columns[1].Attributs
    Columns有Attributs属性?
      

  21.   

    DataGrid.Columns[1].Attributs.Add("style","display:none")
    欢迎来看看我的网站:www.weblove21.com 21友缘交友网
      

  22.   

    <ItemStyle Width="0px"/>
    好像这样就可以。没有空试。麻烦楼主试了告诉我是否OK
      

  23.   

    隐藏?
    <asp:TemplateColumn Visible=False>
    .....
    </asp:TemplateColumn>
      

  24.   

    DataGrid.Columns[1].Attributs.Add("style","display:none")
      

  25.   

    DataGrid.Columns[1].Attributs.Add("style","display:none")
      

  26.   

    楼上的试过吗??DataGrid.Columns[1].Attributs.Add("style","display:none")
    能编译通过?
      

  27.   


    <style>.hide{display:none;}</style><列 cssClass=".hide" /> 实现隐藏我也喜欢用这个
      

  28.   

    说不通的  把它放在RowDataBound事件里了没?
      

  29.   

    好了,结贴了,不过我也做一个总结:
    第一:用DataGrid1.Columns[1].visible=false,在客户端不会生成html代码,用JS取不到值。
    第二:如果用width="0px"来解决,里面的项是为O了,可是上面的表头还是有宽度,在页面程现的时候,隐藏的那一列还是有一定的宽度,只是里面没有了数据。
    第三:把这一列的控件隐藏,同上二,在页面上也会出现第二列,只是没有了项
    第四:可以用<ItemStyle CssClass="" /><HeaderStyle CssClass="" />定义样式来隐藏
    第五:就是孟老师的正解了。
    所以谢谢大家的回答,只能把分给孟老师了。谢谢大家的光临!