2016-04-05 13 views
0

Hallo alle zusammen und Dank im Voraus,Kann nicht die Kontrolle innerhalb Details bearbeiten Zugriff Vorlage

Nun, ich habe ein Detail in meiner ASPX-Datei und ich kann nicht in den Vorlage bearbeitet die Details platziert auf eine CheckBoxList Steuerung zugreifen. Ich habe viele Threads gelesen, kann aber immer noch keine Lösung finden. Hier ist der Code ...

<asp:DetailsView ID="MyDetailsView" runat="server" Height="50px" Width="125px" AutoGenerateRows="False" DataSourceID="DataMyDetailsView"> 
    ... 
    ... 
    <asp:TemplateField HeaderText="DATA" SortExpression="DATA"> 
     <EditItemTemplate> 
      <div style="width:400px; height:300px; overflow-y:auto"> 
       <asp:CheckBoxList ID="DataCL" runat="server" DataSourceID="DataEDIT" DataTextField="DATA" DataValueField="ID_DATA"> 
       </asp:CheckBoxList> 
      </div> 

Dann in meinem CS-Datei Ich habe dieses Stück Code ...

protected void Page_Load(object sender, EventArgs e) 
{ 

    if (!IsPostBack) 
    { 
     // Do something 
    } 
    else 
    { 
     CheckItems(); 
    } 
} 

... 
... 

public void CheckItems() 
{ 
    CheckBoxList DataCL = (CheckBoxList)MyDetailsView.FindControl("DataCL"); 

    using (conexion) 
    { 
     conexion.Open(); 
     cmd.Connection = conexion; 

     DataSet ds = new DataSet(); 
     string cmdstr = "SELECT * FROM DATA"; 
     SqlDataAdapter adp = new SqlDataAdapter(cmdstr, conexion); 
     adp.Fill(ds); 
     DataCL.DataSource = ds; 
     DataCL.DataTextField = "DATA"; 
     DataCL.DataValueField = "ID_DATA"; 
     DataCL.DataBind(); 

Das Problem, das ist, wenn die Ausführung der ersten Zeile erreicht, in dem die Die Steuerung wird aufgerufen (DataCL.DataSource = ds;), eine "NullPointerExeception" wird ausgelöst, ich kann jedoch leicht auf Steuerelemente in ItemTemplate zugreifen.

Bitte, kann mir jemand dabei helfen. Danke noch einmal!

Antwort

1

Dies ist nicht möglich, da dieses Steuerelement dynamisch nach der Datenbindung erstellt wird. Statt das Raster dort DataBound befestigen (MSDN) Ereignis und binden geprüft Box Liste

protected void MyDetailsView_DataBound(object sender, EventArgs e) 
{ 
    if (MyDetailsView.CurrentMode == DetailsViewMode.Edit) 
    { 
     CheckBoxList DataCL = (CheckBoxList)MyDetailsView.FindControl("DataCL"); 

     using (conexion) 
     { 
      // your data bound code goes here 
     } 
    } 
} 
+0

Ok, gzaxx, es funktionierte !, Dank viel, dieses Problem war es mich verrückt! – Mazinger

Verwandte Themen