Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在GridView中使用Hiddenfield时显示空列_C#_Asp.net - Fatal编程技术网

C# 在GridView中使用Hiddenfield时显示空列

C# 在GridView中使用Hiddenfield时显示空列,c#,asp.net,C#,Asp.net,我的GridView中有一个HiddenField。一个很小的空列出现,我如何才能摆脱空列 <asp:GridView ID="GridView1" autogeneratecolumns="false" runat="server" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" autogenerateSelectButton="true"> <Columns

我的GridView中有一个HiddenField。一个很小的空列出现,我如何才能摆脱空列

<asp:GridView ID="GridView1"  autogeneratecolumns="false" runat="server" 
        OnSelectedIndexChanged="GridView1_SelectedIndexChanged"
        autogenerateSelectButton="true">
        <Columns>                                           
            <asp:BoundField datafield ="Song"  headertext="Song"/>                
            <asp:BoundField datafield ="Album"  headertext="Album"/>
            <asp:BoundField datafield ="Artist"  headertext="Artist"/>
            <asp:BoundField datafield ="Genre"  headertext="Genre"/>
            <asp:BoundField datafield ="Price"  headertext="Price"/>
            <asp:BoundField datafield ="Explicit Lyrics"  headertext="Explicit Lyrics"/>
            <asp:TemplateField>                    
            <ItemTemplate>
                <asp:HiddenField ID="HiddenField" runat="server" Value='<%# Eval("SongID")%>'/>
            </ItemTemplate>
            </asp:TemplateField>                            
        </Columns>
    </asp:GridView>

您可以添加以下内容:

<style>
.hidden {display:none;}
</style>

.hidden{显示:无;}
并将这些属性添加到
asp:HiddenField
ItemTemplate
元素中
ItemStyle CssClass=“hidden”

HeaderStyle CssClass=“hidden
:)告诉我它是否有效。

您可以将GridView的CellPadding和CellSpacing属性设置为零:

<asp:GridView CellPadding="0" CellSpacing="0" ... >

如果仍然看到该列,可以将其宽度设置为零:

<asp:TemplateField ItemStyle-Width="0" HeaderStyle-Width="0" ... >


我认为您添加了隐藏字段是为了稍后获取id。无需添加和隐藏列。使用。

GridView中的TemplateField表示在数据绑定控件中显示自定义内容的字段,以及用于存储未显示值的HiddenField

您正在创建一个带有非显示值的自定义内容列,这将导致为前端创建一个以null作为表示视图的列。因此,如果要获取GridView的选定索引更改上的值,则可以使用以下方法:

方法1:使用Datakey for GridView在SeleceedIndexchanged方法中存储所需的datacolumn:

<asp:GridView ID="GridView1"  autogeneratecolumns="false" runat="server" 
        OnSelectedIndexChanged="GridView1_SelectedIndexChanged"
        autogenerateSelectButton="true" DataKeyNames="SongID">
        <Columns>                                           
            <asp:BoundField datafield ="Song"  headertext="Song"/>                
            <asp:BoundField datafield ="Album"  headertext="Album"/>
            <asp:BoundField datafield ="Artist"  headertext="Artist"/>
            <asp:BoundField datafield ="Genre"  headertext="Genre"/>
            <asp:BoundField datafield ="Price"  headertext="Price"/>
            <asp:BoundField datafield ="Explicit Lyrics"  headertext="Explicit Lyrics"/>                           
        </Columns>
    </asp:GridView>
方法2:在gridview中的任何列中添加hiddenfield,而不是特殊的列

<asp:GridView ID="GridView1"  autogeneratecolumns="false" runat="server" 
        OnSelectedIndexChanged="GridView1_SelectedIndexChanged"
        autogenerateSelectButton="true">
        <Columns>                                           
            <asp:BoundField datafield ="Song"  headertext="Song"/>                
            <asp:BoundField datafield ="Album"  headertext="Album"/>
            <asp:BoundField datafield ="Artist"  headertext="Artist"/>
            <asp:BoundField datafield ="Genre"  headertext="Genre"/>
            <asp:BoundField datafield ="Price"  headertext="Price"/>
            <asp:TemplateField headertext="Explicit Lyrics" >                    
            <ItemTemplate>
                <asp:Lable runat="server" ID="lblexp" Text='<%# Eval("Explicit Lyrics")%>'>
                <asp:HiddenField ID="HiddenField" runat="server" Value='<%# Eval("SongID")%>'/>
            </ItemTemplate>
            </asp:TemplateField>                            
        </Columns>
    </asp:GridView>

在Gridview行数据绑定函数中添加以下代码以隐藏所需的列

例如:

在aspx中

<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound">

是的,我现在无法在我的macbook上测试它。如果你想要SongID ie ID,那么你可以使用DatakeyName,或者如果你仍然想要hiddenfield列。将CSS dispaly none应用于标题文本和模板字段。不客气。method1有任何问题或错误吗?我无法让方法1工作。我最终能够通过将值更改为Val使它为我工作谢谢,再次感谢
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound">
 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.Header)
    {
        e.Row.Cells[cellno.].Visible = false;
    } 
   if (e.Row.RowType == DataControlRowType.DataRow)
    {
        e.Row.Cells[cellno.].Visible = false;
    }
}