2012-11-13 61 views
1

首次顯示ASP.Net DetailsView數據時,您能告訴我如何填充此編碼中顯示的變量嗎?使用DetailsView文本框數據值填充變量

我已經嘗試過這個在代碼隱藏文件,但展示了一個錯誤:

Object reference not set to an instance of an object. 

這是編碼:

Protected Sub DetailsViewDetails_DataBound(sender As Object, e As EventArgs) Handles DetailsViewDetails.DataBound 

    Dim txtOriginalRegistrationFee As TextBox 

    If DetailsViewDetails.CurrentMode = DetailsViewMode.Edit Then 
     txtOriginalRegistrationFee = FindControl("TextBoxRegistrationFee") 

     If String.IsNullOrEmpty(txtOriginalRegistrationFee.Text) = False Then 
      MsgBox(txtOriginalRegistrationFee) 
     End If 
    End If 
End Sub 

這是從aspx文件:

<asp:TemplateField HeaderText="RegistrationFee" SortExpression="RegistrationFee"> 
    <EditItemTemplate> 
     <asp:TextBox ID="TextBoxRegistrationFee" runat="server" Text='<%# Eval("RegistrationFee") %>'></asp:TextBox> 
    </EditItemTemplate> 

    <InsertItemTemplate> 
     <asp:TextBox ID="TextBoxRegistrationFee" runat="server" Text='<%# Bind("RegistrationFee") %>'></asp:TextBox> 
    </InsertItemTemplate> 

    <ItemTemplate> 
     <asp:Label ID="LabelRegistrationFee" runat="server" Text='<%# Bind("RegistrationFee", "{0:c}") %>'></asp:Label> 
    </ItemTemplate> 

    <ItemStyle ForeColor="Blue" /> 
</asp:TemplateField> 

*更新*

我嘗試使用這種基於你的幫助更新的編碼,但仍然得到「對象引用未設置爲對象的實例。」單擊DetailsView的編輯按鈕時出錯。

+0

哪條線給出錯誤? – nickles80

+0

如果String.IsNullOrEmpty(txtOriginalRegistrationFee.Text)= False然後 –

+0

這是在一個gridview? – nickles80

回答

1

FindControl函數需要一個控件來搜索,否則它將搜索頁面(或內容)級別的控件。

嘗試

txtOriginalRegistrationFee = DetailsViewDetails.FindControl("TextBoxRegistrationFee") 

通過與MsgBox函數的行不會工作的方式。 MsgBox用於Windows窗體,並且不能在Web上運行。你必須使用JavaScript來實現這種功能。另外,該函數需要一個字符串,而不是一個控件。

+0

非常感謝您的幫助。它的工作原理:-) –

+0

也感謝其他人試圖解決我們的問題。 –

0

我不在VB中工作,所以忍受着我......模板只在您的詳細信息視圖處於插入模式時呈現。

Dim txtOriginalRegistrationFee As TextBox 

If DetailsViewDetails.CurrentMode = DetailsViewMode.Insert Then 
    txtOriginalRegistrationFee = FindControl("TextBoxRegistrationFee") 

    If String.IsNullOrEmpty(txtOriginalRegistrationFee.Text) = False Then 
     MsgBox(txtOriginalRegistrationFee) 
    End If 
End If 
+0

感謝您的編碼。是否有可能在編輯模式下獲取該值,如:如果DetailsViewDetails.CurrentMode = DetailsViewMode.Edit Then ...? –

+0

您可以在插入和編輯模式下使用相同的文本框。只需將其包含在兩個模板中。 – andleer

+0

感謝您的回覆。我嘗試了它的編輯模式,但仍然得到「對象引用未設置爲對象的實例」錯誤。我想我需要使用「新」,但不知道要這樣做。你可以展示一個使txtOriginalRegistrationFee作爲新對象的代碼示例嗎? –