ASP.NET中的GridView不显示有或没有数据

时间:2012-04-23 21:47:28

标签: c# asp.net gridview

我正在添加一个GridView&然后从SQL Server数据库中显示数据。问题是GridView没有在带有或没有数据的浏览器中显示。

这是我的代码:

<asp:GridView ID="GridAllStore"  runat="server" AutoGenerateColumns="False" Width="100%"  ViewStateMode="Enabled">

public partial class AdminPanel : System.Web.UI.Page
{
    storelocatorDataSetTableAdapters.storedbTableAdapter tastore = new storelocatorDataSetTableAdapters.storedbTableAdapter();
    storelocatorDataSetTableAdapters.View_1TableAdapter taview = new storelocatorDataSetTableAdapters.View_1TableAdapter();

    List<storelocatorDataSet.storedbRow> lststore = new List<storelocatorDataSet.storedbRow>();
    List<storelocatorDataSet.View_1Row> lstview = new List<storelocatorDataSet.View_1Row>();
    protected void Page_Load(object sender, EventArgs e)
    {
        lstview = taview.GetData().ToList();
        GridAllStore.DataSource = lstview; 
    }
}

3 个答案:

答案 0 :(得分:17)

我认为问题是你没有定义任何要显示的列。将AutoGenerateColumns设置为false时,必须明确定义列。

要确保基本工作集AutoGenerateColumns为true:

<asp:GridView ID="GridAllStore"  runat="server" AutoGenerateColumns="true" Width="100%"  ViewStateMode="Enabled">

AutoGenerateColumns设置为true,分配数据源并调用DataBind(),您应该开始看到一些数据。一旦开始看到数据,就可以定义要显示的特定列。

由于您只需要在第一页加载时绑定网格,因此请使用!Page.IsPostBack条件:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        GridAllStore.DataSource = lstview;
        GridAllStore.DataBind();
    }
}

答案 1 :(得分:2)

将您的代码更改为:

protected void Page_Load(object sender, EventArgs e)
{
    lstview = taview.GetData().ToList();
    GridAllStore.DataSource = lstview; 
    GridAllStore.DataBind();
}

将GridView标记更改为:

<asp:GridView ID="GridAllStore"  runat="server" AutoGenerateColumns="True" Width="100%"  ViewStateMode="Enabled" />

注意到它现在是AutoGenerateColumns="True",因为它会显示数据并生成列。您可能需要自定义显示的内容。要做到这一点,既然您现在还不知道自己在做什么,请切换到设计视图,然后编辑gridview模板。

查看这篇文章,了解一些自定义输出列和数据的帮助。 http://msdn.microsoft.com/en-us/library/bb288032.aspx

答案 2 :(得分:1)

您是否尝试在设置数据源后立即添加以下行?

GridAllStore.DataBind();