8

我正在添加一个 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; 
    }
}
4

3 回答 3

19

我认为问题在于您尚未定义要显示的任何列。当您设置AutoGenerateColumns为 false 时,您必须明确定义列。

为了确保基础工作设置AutoGenerateColumns为 true:

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

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

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

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        GridAllStore.DataSource = lstview;
        GridAllStore.DataBind();
    }
}
于 2012-04-23T22:04:17.777 回答
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

于 2012-04-23T22:03:33.593 回答
1

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

GridAllStore.DataBind();
于 2012-04-23T21:50:22.660 回答