繁体   English   中英

ASP.NET中的数据列表将不会显示?

[英]Datalist in ASP.NET will not display?

几天来,我一直在使用ASP.NET代码中的DataList动态生成一些标签,而就我自己而言,无法将控件显示在屏幕上。 我相当确定这个问题是一些小的语法问题,或者是我忘记设置的HTML标签。 我已经通过调试器确认,数据列表实际上已被拉到数据源中,并且当我查看HTML代码“设计”视图时,控件确实会显示。 但是,当我运行页面时,该控件不可见。 对于为什么会发生这种情况的任何见解将不胜感激。

以下是与问题相关的代码...

C#局部类:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            InventoryService service = new InventoryService();

            ArrayList foundYears = service.FindYears();
            DataSet ds = new DataSet();
            ds.Tables.Add("Years");
            ds.Tables[0].Columns.Add("Year");

            foreach (string yr in foundYears)
            {
                if (yr != "")
                {
                    DataRow dr = ds.Tables[0].NewRow();
                    dr["Year"] = yr;
                    ds.Tables[0].Rows.Add(dr);
                }
            }

            DataList headerRepeater = new DataList();
            headerRepeater.DataSource = ds.Tables[0];
            headerRepeater.DataKeyField = "Year";
            headerRepeater.DataBind();
            headerRepeater.Visible = true;
        }
    }

HTML局部类:

<table width="100%" align="center">
    <tr>
        <td style="width: 868px">
             <asp:DataList id='headerRepeater' Runat='server' CellPadding='5' CellSpacing='15' GridLines='Vertical' HorizontalAlign='Left' RepeatColumns='30' RepeatDirection='Horizontal' RepeatLayout='Table' ShowFooter='False' ShowHeader='False' Visible = 'True' CssClass='DataList' DataKeyField ='Year'>
            <ItemTemplate>
                <asp:Label runat='server' ID='lblItemName' Text='<%# DataBinder.Eval(Container.DataItem, "Year") %>'>
                </asp:Label>
            </ItemTemplate>
        </asp:DataList>
    </td>
</tr>
<tr>

当您说以下内容时,您正在创建一个新的局部变量:

DataList headerRepeater = new DataList(); .

从Page_Load 删除此行 ,页面应该可以正常工作。

在触发页面加载事件时,数据列表已经添加到页面控件集合中

// Why do you create a new variable named 'headerRepeater' here?    
DataList headerRepeater = new DataList(); 
headerRepeater.DataSource = ds.Tables[0];
headerRepeater.DataKeyField = "Year";
headerRepeater.DataBind();
headerRepeater.Visible = true;

删除以下行:

DataList headerRepeater = new DataList(); 

您正在创建DataList的新实例,但尚未将其添加到页面控件中。

DataList headerRepeater = new DataList(); //The problem is here ControlThatWillHoldTheDataList.Controls.Add(headerRepeater); //My Addition
headerRepeater.DataSource = ds.Tables[0];
headerRepeater.DataKeyField = "Year";
headerRepeater.DataBind();
headerRepeater.Visible = true;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM