gridview空列和错误的顺序

时间:2014-08-12 10:01:39

标签: c# asp.net class gridview extend

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

网站如下:

[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>

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

GridView的:

<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。