Frage

Ich arbeite seit einigen Tagen daran, einige Etiketten mit einem Datalisten im ASP.NET -Code dynamisch zu generieren, und kann das Leben auf dem Bildschirm nicht für die Lebensdauer von mir bringen. Ich bin mir ziemlich sicher, dass das Problem eine kleine syntaktische Sache oder ein HTML -Tag ist, das ich vergessen habe. Ich habe über den Debugger bestätigt, dass die Liste der Daten in der Tat in die DataSource gezogen wird, und wenn ich den HTML -Code -Design -Ansicht anzeige, wird die Steuerung angezeigt. Wenn ich die Seite jedoch ausführe, ist die Steuerung nicht sichtbar. Jeder Einblick in den Fall, warum dies geschieht, wäre sehr geschätzt.

Im Folgenden finden Sie den Code, der für die Frage relevant ist ...

C# Teilklasse:

    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 -Teilklasse:

<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>
War es hilfreich?

Lösung

Sie erstellen eine neue lokale Variable, wenn Sie sagen:

DataList headerRepeater = new DataList(); .

Entfernen Sie diese Linie Aus der Seite. Laden Sie die Seite gut funktionieren.

Die Datenliste wird bereits zur Sammlung der Seitensteuerung hinzuge

Andere Tipps

// 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;

Entfernen Sie die folgende Zeile:

DataList headerRepeater = new DataList(); 

Sie erstellen eine neue Instanz eines Datalisten und haben sie nicht zu den Seitensteuerungen hinzugefügt.

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;

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top