2012-03-14 2 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

+0

Нет, это не редактируется –

ответ

3

Это потому, что у вас есть пустая строка в вашем файле. Из-за этого reader.Read() истинно. Userid, group и подгруппа - это пустые строки. Таким образом, пользовательский объект создается с пустыми значениями, приводящими его к пустой строке.

+1

хорошая мысль, но я нашел решение .. не причина. В тот момент, когда я зафиксировал размер массива точно так же, как и число строк, которое я получал, дополнительных строк не было. Зачем нужно больше думать, я думаю .. –

0

Возможно потому, что ваш являются увеличивающимся я на первых читать, таким образом, оставляя пользователь [0] пустых? Попробуйте изменить код, указанный ниже:

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

Если я что-то не хватает, это не работает оператор post ++. i ++ будет оцениваться как -1 на первой итерации вашего кода, что, вероятно, приведет к исключению indexoutofrange. –

+2

i ++ приращения после того, как он вызван, ++ я бы увеличил до – JCherryhomes

+0

, что, похоже, не так, мои пользователи там от индекса 0 до 4 i.e. 5 пользователей –

Смежные вопросы