2012-03-14 16 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()はtrueです。ユーザーID、グループ、およびサブグループは空の文字列です。そのため、空の行に導く空の値を持つユーザーオブジェクトが作成されます。

+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

何かが欠けていない限り、それはポスト++演算子が動作する方法ではありません。 i ++はコードの最初の反復で-1と評価され、おそらくindexoutofrange例外がスローされます。 –

+2

呼び出された後に++がインクリメントされる++は、 – JCherryhomes

+0

の前にインクリメントされますが、そうでないと思われます。ユーザーはインデックス0から4、すなわち5人のユーザーです。 –

関連する問題