2012-03-14 117 views
0

我想結合網格下面的數據源。當沒有數據時,爲什麼我會在那裏得到額外的一行?行數也是正確的,我可以看到,當我調試。爲什麼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> 
+0

是否可編輯? – Arun 2012-03-14 23:40:20

+0

不,它是不可編輯 – 2012-03-15 04:50:41

回答

3

這是因爲你在你的文件中的空行。由於這個reader.Read()是真的。用戶標識,組和子組都是空字符串。所以用空對象創建一個用戶對象,將其引導到空行。

+1

不錯的想法,但我發現solution..not的根本原因,但。當我將數組的大小固定爲我收到的行數時,沒有多餘的行。爲什麼需要更多的想法我猜.. – 2012-03-15 13:28:27

0

可能是因爲你是在第一次讀因此留下網友[0]空白遞增我?嘗試更改您的代碼如下:

int i = -1; 
while (reader.Read()) 
{ 
    users[i++] = new { 
    userid= reader.GetString(0), 
    group = reader.GetString(1), 
    subgroup = reader.GetString(2), 
    }; 
} 
+0

除非我失去了一些東西,這是沒有辦法的辦法後++運算符的作品。在您的代碼的第一次迭代中,i ++將被評估爲-1,這可能會引發indexofofrange異常。 – 2012-03-15 00:10:25

+2

我++的增量,它被稱爲後,++我會 – JCherryhomes 2012-03-15 00:47:18

+0

這似乎並不如此前增加,我的用戶是有從指數0到4個,即5個用戶 – 2012-03-15 04:51:35

相關問題