2013-10-31 38 views
1

我建立一个SqlDataSource和一个GridView:为什么我的gridview为空?

 <asp:SqlDataSource ID="DetailsSQLDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:aspnet-WebApplication6-20131007103938ConnectionString1 %>" 
    SelectCommand="SELECT [ProjectID], [ProjectName], [CreatorID], [Deadline] FROM [tProject] WHERE 1=1" 
    > 
     <SelectParameters> 
     <asp:Parameter Type="String" Name="ProjectID"></asp:Parameter> 
     </SelectParameters> 
    </asp:SqlDataSource> 


<asp:GridView ID="GridView1" runat="server" DataSourceID="DetailsSQLDataSource" AutoGenerateColumns="False" DataKeyNames="ProjectID" OnRowUpdated="GridView1_RowUpdated" OnRowUpdating="GridView1_RowUpdating"> 
    <Columns> 
     <asp:BoundField DataField="ProjectID" HeaderText="ProjectID" ReadOnly="True" SortExpression="ProjectID"></asp:BoundField> 
     <asp:BoundField DataField="ProjectName" HeaderText="ProjectName" SortExpression="ProjectName"></asp:BoundField> 
     <asp:BoundField DataField="CreatorID" HeaderText="CreatorID" SortExpression="CreatorID"></asp:BoundField> 
     <asp:BoundField DataField="Deadline" HeaderText="Deadline" SortExpression="Deadline"></asp:BoundField> 
    </Columns> 
</asp:GridView> 

我已经测试的SelectCommand,并且它返回一个表具有4行。但是没有数据要显示在gridview中。代码隐藏几乎是空的,肯定不会影响这些控件。它可以是连接的东西吗?我如何测试?

+0

卡尔建议,在你的页面加载事件调用Gridview1.DataBind()。像这样if(!IsPostback)GridView1.DataBind(); –

回答

1

呼叫.DataBind()实际上迫使数据绑定到网格,像这样:

GridView1.DataBind(); 
+0

谢谢,这个工程。但我不明白。在另一个非常相似的页面上,我不必手动调用数据绑定,它会自动发生。 –

+1

@ViktorPless - 您是否在另一页上使用了AutoGenerateColumns =“True”? –

+0

我尝试了两个值,所以它可能不是原因。你知道什么是有趣的吗?现在我已经完成了你所说的我不再需要隐藏代码,新插入的控件现在可以在没有数据绑定方法的情况下正常工作!这就像他学会了如何绑定数据:) –