【问题标题】:gridview empty column and wrong ordergridview 空列和错误的顺序
【发布时间】:2014-10-05 08:32:10
【问题描述】:

我已经创建了一个类,并且我扩展了该类并创建了另一个类。我想在 GridView 中显示所有对象。我使用第二个构造函数,但为什么我还看到空列?我从来没有在年龄上添加任何东西,但它仍然出现?我怎样才能正确隐藏这个? 我的代码中有什么不好的地方,我可以做得更好吗?为什么昵称是第一位的?

网站看起来像这样:

[nickName]           [name]       [age]
[MonkeyNickName1]    [Monkey1]    []
[MonkeyNickName2]    [Monkey2]    []
[MonkeyNickName3]    [Monkey3]    []

类:

public class Monkey
{
    private string name;
    private int age;

    public Monkey(string name, int age)
    {
        this.name = name;
        this.age = age;
    }

    public Monkey(string name)
    {
        this.name = name;
    }

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    public int Age
    {
        get { return age; }
        set { age = value; }
    }
}

另一个类:

public class ExtendMonkey : Monkey
{
    private string nickName;

    public ExtendMonkey(string name, string nickName) : base(name)
    {
        this.nickName = nickName;
    }

    public string NickName
    {
        get { return nickName; }
        set { nickName = value; }
    }
}

主文件:

List<ExtendMonkey> monkeyList = new List<ExtendMonkey>();

for(int i = 0; i < 3; i++)
{
    monkeyList.Add(new ExtendMonkey("Monkey" + i, "MonkeyNickName" + i)
}


GridView1.DataSource = monkeyList;
GridView1.DataBind();

网站:

<asp:GridView ID="GridView1" runat="server"></asp:GridView>

【问题讨论】:

    标签: c# asp.net class gridview extend


    【解决方案1】:

    您可以为要查看的每一列添加 Boundfield,并按照您希望查看的顺序来避免看到您不想看到的列:

    <asp:GridView ID="GridView1" runat="server">
      <Columns>
        <asp:BoundField DataField="nickName" HeaderText="nickname">
        ...
      </Columns>
    </asp:GridView>
    

    【讨论】:

      【解决方案2】:

      你需要设置 grid.AutoGenerateColumns = false;然后只绑定 要在网格中显示的属性

      【讨论】:

        【解决方案3】:

        我测试了你的代码,这对我有用:

        网格视图:

        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
        <Columns>
        <asp:BoundField DataField="nickName" HeaderText="Nick Name" />
        <asp:BoundField DataField="name" HeaderText="Name" />
        <asp:BoundField DataField="age" HeaderText="Age" />
        </Columns>
        </asp:GridView>
        

        代码:

        List<ExtendMonkey> monkeyList = new List<ExtendMonkey>();
        
        for(int i = 0; i < 3; i++)
        {
        monkeyList.Add(new ExtendMonkey("Monkey" + i, "MonkeyNickName" + i));
        }
        GridView1.DataSource = monkeyList;
        GridView1.DataBind();
        GridView1.Columns[2].Visible = false; //this column has age
        

        您可以根据需要更改 BoundFields 的显示顺序。此外,如果您想随时显示年龄,您可以简单地将 Column[2] 的 Visible 属性从 False 更改为 True。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-07-30
          • 1970-01-01
          • 1970-01-01
          • 2019-07-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-29
          相关资源
          最近更新 更多