我正在尝试将网格绑定到以下数据源。当没有数据时,为什么我会在那里获得额外的行?行的计数也是正确的,我可以在调试时看到。
Object[] users = new Object[100];
int i = 0;
while (reader.Read())
{
users[i++] = new {
userid= reader.GetString(0),
group = reader.GetString(1),
subgroup = reader.GetString(2),
};
}
gridview_UserAccess.DataSource = users;
gridview_UserAccess.DataBind();
<asp:GridView ID="gridview_UserAccess" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None">
<Columns>
<asp:TemplateField HeaderText="Select">
<ItemTemplate>
<asp:CheckBox ID="chkbox_Select" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<AlternatingRowStyle BackColor="White" />
<EditRowStyle BackColor="#2461BF" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#EFF3FB" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
</asp:GridView>
答案 0 :(得分:3)
这是因为您的文件中有一个空白行。因为这个reader.Read()是真的。 Userid,组和子组是空字符串。因此,创建一个用户对象,其空值将其引导到空行。
答案 1 :(得分:0)
可能是因为您在第一次阅读时正在增加i,从而使用户[0]空白?尝试将您的代码更改为以下内容:
int i = -1;
while (reader.Read())
{
users[i++] = new {
userid= reader.GetString(0),
group = reader.GetString(1),
subgroup = reader.GetString(2),
};
}