【问题标题】:GridView: order column, show/hide columnsGridView:排序列,显示/隐藏列
【发布时间】:2013-02-06 16:46:04
【问题描述】:

好的...所以我正在尝试使用 GridView 显示我的数据库中的表中的数据。我需要更改列的显示顺序,并且需要根据用户浏览网站的语言(法语或英语)显示/隐藏某些列。

到目前为止,在我的代码中我有这个。数据正在通过 DataSource 加载。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    LoadS25ATransactionsData()

End Sub


Private Sub LoadS25ATransactionsData()

    gvS25ATransactions.Visible = True
    gvS25ATransactions.DataSource = ViewS25A.GetS25ATransactions
    gvS25ATransactions.DataBind()

End Sub

我尝试了很多方法来更改列的顺序并隐藏和显示其他内容,但无济于事。请帮忙!

谢谢!

【问题讨论】:

    标签: asp.net vb.net-2010


    【解决方案1】:

    您可以使用 GridView.Columns[0] 按索引隐藏列或按名称隐藏,如下例所示。

    <asp:GridView runat="server" ID="GridView1" 
       AutoGenerateColumns="False" OnPreRender="GridView_PreRender">
        <Columns>
            <asp:BoundField DataField="LastName" HeaderText="LastName" />
            <asp:BoundField DataField="FirstName" HeaderText="FirstName" />
        </Columns>
    </asp:GridView>
    
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            var users = new List<User>
                {
                    new User {FirstName = "John", LastName = "Doe"},
                    new User {FirstName = "Marry", LastName = "Newton"},
                    new User {FirstName = "Joe", LastName = "Black"}
                };
    
            GridView1.DataSource = users;
            GridView1.DataBind();
        }
    }
    
    protected void GridView_PreRender(object sender, EventArgs e)
    {
        foreach (DataControlField column in GridView1.Columns)
            if (column.HeaderText == "FirstName")
                column.Visible = false;
    }
    

    【讨论】:

    • 对您提供的代码进行了一些更改,效果很好!谢谢你把我送到正确的方向!
    猜你喜欢
    • 1970-01-01
    • 2023-02-15
    • 2012-12-28
    • 1970-01-01
    • 2015-10-29
    • 2013-07-03
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多