我创建了一个类,并且我已经扩展了该类创建另一个类。我想在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>
答案 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。