无法将ASP.Net Gridview模板列宽设置为0

时间:2011-11-14 04:46:31

标签: c# asp.net visual-studio gridview

在asp.net网格视图中,我添加了一个TemplateColumn,我需要将其宽度设置为0,即使我在HTML代码或代码中设置它,当它在浏览器中显示时它有一个宽度。怎么解决这个问题?

HTML

<asp:TemplateField Visible="False" ControlStyle-Width="0">
            <HeaderStyle BorderWidth="0" Width="0"></HeaderStyle>
            <ItemStyle BorderWidth="0" Width="0"></ItemStyle>
            <FooterStyle BorderWidth="0" Width="0"></FooterStyle>
            <ItemTemplate>
                <itemstyle width="0" />
                <asp:PlaceHolder ID="ExpandedContent" Visible="false" runat="server"></td> </tr>
                    <tr>
                        <td class="label" colspan="2" align="left">
                    Test</asp:PlaceHolder>
                </td> </tr>
            </ItemTemplate>
            <FooterStyle BorderWidth="0px" Width="0px" />
        </asp:TemplateField>

输出HTML

output

输出

enter image description here

5 个答案:

答案 0 :(得分:2)

将列中数据的字体大小设置为0,希望这有效..谢谢

<asp:BoundField DataField="CommID" Visible="true" ItemStyle-ForeColor="White"  
          HeaderText="" ItemStyle-Width="0px" ControlStyle-Width="0px" ItemStyle-Font-Size="0" > 

答案 1 :(得分:0)

我的建议是,您使列不可见(设置Visible="false")并将您在该列上绑定的属性定义为网格上的DataKeyNames之一;这样,您就可以随时检索它。

例如:

<asp:gridview DataKeyNames="PropertyYouNeed,ID,SomethingElse" ... />

然后当您回发时,您可以从GridView.DataKeys property

获取数据

答案 2 :(得分:0)

我发现TemplateColumn HeaderText会自动设置为四个空格(自动生成),将HeaderText设置为一个空格来解决问题。

enter image description here

答案 3 :(得分:0)

以下解决方案为我工作 - 1.在css下面创建

<style>
    .hidden { display: none;}
</style>
  1. 修改您的TemplateField,如下所示

    &LT; asp:TemplateField HeaderText =“”&gt;
        &LT; HeaderStyle CssClass =“hidden”Width =“0px”/&gt;
        &LT; ItemStyle CssClass =“hidden”Width =“0px”/&gt;
    &LT;的ItemTemplate&GT; &LT; asp:HiddenField ID =“IDVal”runat =“server”Value ='&lt;%#Eval(“UserID”)%&gt;' /&GT;
    &LT; / ItemTemplate中&GT;
    &LT; / ASP:的TemplateField&GT;

  2. 希望这会有所帮助。感谢

答案 4 :(得分:0)

我尝试使用ItemStyle-Width="0px" ControlStyle-Width="0px",但显示的是小列。然后我尝试使用Visible="false"然后该列不可见,但问题是当我们尝试在代码中获取单元格文本时,它显示“”。

我的解决方案:

设置GridView1.Columns(2).Visible = False

如果您想从该列读取数据,那么

 GridView1.Columns(2).Visible = True

 If GridView1.Rows(1).Cells(2).Text ="abc" Then
        'do somthing......

 GridView1.Columns(2).Visible = False