2017-09-26 26 views
0

當數據庫不包含需要首先輸入的數據時,我使用gridview來管理數據。在我第一次使用detailsview的時候輸入數據,我把它放在gridview的EmptyDataTemplate中。 ? 如何訪問的DetailView的文本框,這是在GridView的EmptyDataTemplate我總是得到錯誤空引用在gridview的EmptyDataTemplate中插入新行並使用detailview

<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

哪一行會拋出NullReference異常? –

+0

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

+0

將它放在FooterTemplate中。 – AsifAli72090

回答

0

感謝您的建議,我最終使用的代碼如下:

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");