2016-04-14 12 views
1

Ich arbeite an einem ASP.NET-Steuerelement (für BlackBaud NetCommunity-System), die Daten aus der Datenbank laden müssen, und aktualisieren Sie einige aktivierten Status der Steuerelemente basierend auf den Daten, die geladen wurden. Von dem, was ich anhand des Seitenlebenszyklus von Microsoft sehen kann, ist der geeignete Ort, um dies zu ändern, während des Page_PreRenderComplete-Ereignisses, aber das scheint nicht zu funktionieren, also vermute ich, dass ich falsch liege. Ich weiß es jedoch nicht genau, da ich nicht sehen kann, wo der eigentliche Datenbankabruf stattfindet. Ich habe zwei Dropdown-Menüs für dieses Steuerelement, die bestimmen, welche Daten in einem Raster darunter angezeigt werden, und das Raster muss seinen Status basierend auf den darin enthaltenen Daten ändern. Muss ich herausfinden, wie ich die Daten früh laden kann, und dann meine Statusaktualisierungen vornehmen kann, oder kann ich die Aktualisierungen später irgendwo machen und trotzdem korrekt rendern?Wann werden Daten in ASP .NET geladen?

+0

Sind diese Databound Kontrollen? Was ist mit dem DataBound-Ereignis? –

Antwort

0

Page_PreRenderComplete ist zu spät, um ein Steuerelement zu bearbeiten. Normalerweise verwenden wir PreRender Ereignis.

Wenn Sie jedoch wollen Kontrollen innerhalb Gridview befindet sich manipulieren, möchten Sie RowDataBound Ereignis des Gridview verwenden, in dem Sie Steuerelemente mit Findcontrol finden.

Zum Beispiel

protected void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e) 
{ 
    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 
     var textbox = e.Row.FindControl("MyTextBox") as TextBox; 
    } 
} 
+0

Muss ich von der Steuerung lesen? Ich habe gerade direkt aus dem Datensatz gelesen. –

+0

Sie können den Rest der Daten in RowDataBound erhalten, indem Sie DataItem in DataRowView umwandeln - 'DataRowView rowView = (DataRowView) e.Row.DataItem; var data = rowView ["MeinColumnName"]. ToString(); ' – Win