C# 在GridView中使用Hiddenfield时显示空列
我的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
<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;
}
}