为什么GridView中有一行额外的行?

时间:2012-03-14 23:20:00

标签: c# asp.net gridview

我正在尝试将网格绑定到以下数据源。当没有数据时,为什么我会在那里获得额外的行?行的计数也是正确的,我可以在调试时看到。

Grid snapshot

 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> 

2 个答案:

答案 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),
    };
}