在GridView中隐藏列

4
我有一份数据集,其中包含以下数据:CategoryDI、CategoryName和CateoryPicture。我使用GridView展示这些数据,但我只想展示CategoryName并隐藏categoryid和CategoryPicture。我试着使用下面的代码,但它没有起作用,请帮帮我,谢谢。
GridView1.DataSource = getDataSet.Tables(0)
    GridView1.DataBind()

    GridView1.Columns(0).Visible = False
    GridView1.Columns(1).Visible = true
    GridView1.Columns(2).Visible = False
6个回答

3
 protected void gvDocuments_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            e.Row.Cells[1].Visible = false;
        }

这种方法更加有条理和分离的方式来完成它。 - rynkadink

3
  Me.GridView1.DataSource = ds6
    Me.GridView1.DataBind()
    If GridView1.Columns.Count > 0 Then
        Me.GridView1.Columns(0).Visible = False
        Me.GridView1.Columns(9).Visible = False
        Me.GridView1.Columns(2).Visible = False
        Me.GridView1.Columns(3).Visible = False 
    Else
        GridView1.HeaderRow.Cells(0).Visible = False
        GridView1.HeaderRow.Cells(9).Visible = False
        GridView1.HeaderRow.Cells(2).Visible = False
        GridView1.HeaderRow.Cells(3).Visible = False
        For Each gvr In GridView1.Rows
            gvr.Cells(0).Visible = False
            gvr.Cells(9).Visible = False
            gvr.Cells(2).Visible = False
            gvr.Cells(3).Visible = False
        Next
    End If

1
在您的aspx页面中,请确保使用“AutogenerateColumns=False”定义您的GridView,然后指定要查看的列。
例如:
 <asp:GridView ID="mygrid" runat="server" AutoGenerateColumns="False" CellPadding="4"
 GridLines="Horizontal" Width="800px" ShowFooter="False" CssClass="grid"  AlternatingRowStyle-CssClass="alt">
    <Columns>
  <asp:BoundField HeaderText="Name" DataField="CategoryName"></asp:BoundField>
  <asp:BoundField HeaderText="Picture" DataField="CategoryPciture"></asp:BoundField>
    </Columns>
  <asp:GridView>

这将只显示您想要看到的列。

在您的代码后台中,只需执行

 mygrid.Datasource= xxx

跟随着一个

 mygrid.databind 

那就可以了。


1
.DisplayNone
{
 Display:none   
}

接着,在每个你想要隐藏的列的“BoundField”标签结束前添加以下内容:

<HeaderStyle CssClass="DisplayNone"></HeaderStyle>
<ItemStyle CssClass="DisplayNone"></ItemStyle>

出现的效果就像你已经指定了“Visible=False”,但它仍然可以被你的代码访问。但请注意,如果从浏览器中查看源代码,它仍然会出现,所以如果隐藏的数据很敏感,请不要使用这种技术。


0

一段简单的代码示例

    Me.DataGridView1.Columns("CategoryID").Visible = False
    Me.DataGridView1.Columns("CategoryName").Visible = False
    Me.DataGridView1.Columns("CateoryPicture").Visible = False

敬礼。


0

但它给了我以下内容

Conversion from string "Branch" to type 'Integer' is not valid.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Response.Cache.SetCacheability(HttpCacheability.NoCache)
    setMenu()
    Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache)
    Response.Cache.SetNoStore()
    lbldte.Text = DateAndTime.Now.ToShortDateString
    If Page.PreviousPage IsNot Nothing Then
        Dim GridView1 As GridView = DirectCast(Page.PreviousPage.FindControl("GridView1"), GridView)

    End If
    If Session("ProductsTable") IsNot Nothing Then
        dt = DirectCast(Session("ProductsTable"), DataTable)

        GridView1.DataSource = dt
        GridView1.DataBind()
        If GridView1.Columns.Count > 0 Then
            Me.GridView1.Columns("Branch").Visible = False
            Me.GridView1.Columns("Visit date").Visible = False
            Me.GridView1.Columns("Emp.Age").Visible = False
        End If
    End If

    If Not IsPostBack Then
        'check if the webpage is loaded for the first time.
        'Saves the Previous page url in ViewState
        ViewState("PreviousPage") = Request.UrlReferrer
    End If
End Sub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接