2017-09-26 1 views
0

J'utilise le gridview pour gérer les données, lorsque la base de données ne contient pas les données dont elle a besoin d'être saisie en premier. pour entrer des données la première fois que j'utilise detailsview que je mets dans EmptyDataTemplate du gridview. ? comment accéder à la zone de texte de detailview qui est en EmptyDataTemplate de gridview je reçois toujours l'erreur référence nullinsérer une nouvelle ligne avec detailsview sur EmptyDataTemplate de gridview

<EmptyDataTemplate>     
 
       <asp:DetailsView ID="DetailsView3" runat="server" AutoGenerateRows="False" DataKeyNames="IDKOREKSIREFUND" DataSourceID="KoreksiRefundObjectDataSource" DefaultMode="Insert" Height="50px" Width="125px" > 
 
        <Fields> 
 
         <asp:BoundField DataField="IDKOREKSIREFUND" HeaderText="IDKOREKSIREFUND" InsertVisible="False" ReadOnly="True" SortExpression="IDKOREKSIREFUND" /> 
 
         
 
         <asp:TemplateField HeaderText="NILAI" SortExpression="NILAI">        
 
          <InsertItemTemplate> 
 
           <asp:TextBox ID="dvNilaiTextBox" runat="server" Text='<%# Bind("NILAI") %>'></asp:TextBox> 
 
          </InsertItemTemplate>        
 
         </asp:TemplateField> 
 
         
 
         <asp:CommandField ShowInsertButton="True" /> 
 
        </Fields> 
 
       </asp:DetailsView> 
 
      </EmptyDataTemplate> 
 
     </asp:GridView>

protected void KoreksiRefundObjectDataSource_Inserting(object sender, ObjectDataSourceMethodEventArgs e) 
    { 
     if (KoreksiGridView.Rows.Count == 0) 
     // We are inserting through the DetailsView in the EmptyDataTemplate 
     {     
      TextBox NewNilai1 = (TextBox)KoreksiGridView.FooterRow.Controls[0].FindControl("dvNilaiTextBox"); 

      decimal? NILAI1 = null; 
      if (!string.IsNullOrEmpty(NewNilai1.Text)) 
       NILAI1 = Convert.ToDecimal(NewNilai1.Text); 
      e.InputParameters["NILAI"] = NewNilai1.Text; 

      return; 
     } 


     // Programmatically reference Web controls in the inserting interface... 
     TextBox NewNilai= (TextBox)KoreksiGridView.FooterRow.FindControl("NewNilaiTextBox");      

     decimal? NILAI = null; 
     if (!string.IsNullOrEmpty(NewNilai.Text)) 
      NILAI = Convert.ToDecimal(NewNilai.Text); 
     e.InputParameters["NILAI"] = NewNilai.Text; 

    } 
+0

Quelle ligne renvoie l'exception NullReference? –

+0

TextBox NewNilai1 = (TextBox) KoreksiGridView.FooterRow.Controls [0] .FindControl ("dvNilaiTextBox"); – bazcava

+0

mettez-le dans FooterTemplate. – AsifAli72090

Répondre

0

Merci pour la suggestion, je fini par utiliser le code comme suit:

if (KoreksiGridView.Rows.Count == 0) 
     // We are inserting through the DetailsView in the EmptyDataTemplate 
     { 
      DetailsView DetailsView3 = (DetailsView) KoreksiGridView.Controls[0].Controls[0].FindControl("DetailsView3"); 
      TextBox NewNilai1 = (TextBox)DetailsView3.FindControl("dvNilaiTextBox");