2015-12-14 2 views
2

Ссылка на нулевой объект была решена. Теперь мне нужно вернуть возвращаемое значение в запись. Вот данные связаны код:Почему возвращаемое значение не сохраняется в DetailsView?

Private Sub dvSMasterCurrentYear_DataBound(sender As Object, e As EventArgs) Handles dvSMasterCurrentYear.DataBound 
     Dim dv As DetailsView = New DetailsView 
     dv = dvSMasterCurrentYear 
     If DetailsViewMode.Insert Then 
      Dim ctl = dv.FindControl("PlantYear") 
      If ctl IsNot Nothing Then 
       DirectCast(dv.FindControl("PlantYear"), TextBox).Text = GetYear() 
      Else 
       Throw New Exception("Control was not found") 
      End If 
     End If 
    End Sub 

Вот это GetYear функция:

Public Function GetYear() 
     Dim thisDate As Date = Now 
     Dim thisYear As String 
     'thisDate = #2/12/1969# 
     thisYear = Year(thisDate) 
     Return thisYear 
    End Function 

Для вставки Я использую это:

Private Sub DetailsView1_ItemInserting(sender As Object, e As DetailsViewInsertEventArgs) Handles dvSMasterCurrentYear.ItemInserting 
      Dim view As DetailsView = DirectCast(sender, DetailsView) 
      Dim txtYearPlant As TextBox = DirectCast(DirectCast(sender, DetailsView).FindControl("PlantYear"), TextBox) 
End Sub 

Это то, что знак вверх выглядит как:

<asp:TemplateField HeaderText="Year Plant (yyyy)*"> 
         <ItemTemplate> 
         <asp:Label ID="Label1" runat="server" Text='<%# Bind("PlantYear") %>'></asp:Label> 
          <%# Eval("Year")%> 
        </ItemTemplate> 
        <EditItemTemplate> 
         <asp:TextBox ID="PlantYear" runat="server"></asp:TextBox> 
        </EditItemTemplate> 
        <InsertItemTemplate> 
          <asp:TextBox ID="PlantYear" runat="server" Text='<%# GetYear()%>'></asp:TextBox > 
        </InsertItemTemplate> 
       </asp:TemplateField> 

M arkup выглядит так:

<asp:TemplateField HeaderText="Year Plant (yyyy)*"> 
    <ItemTemplate> 
     <asp:Label ID="Label1" runat="server" Text='<%# Bind("PlantYear")%>'></asp:Label> 
     <%# Eval("Year")%> 
    </ItemTemplate> 
    <EditItemTemplate> 
     <asp:TextBox ID="PlantYear" runat="server"></asp:TextBox>  
    </EditItemTemplate> 
    <InsertItemTemplate> 
     <asp:TextBox ID="PlantYear" runat="server" Text='<%# GetYear()%>'></asp:TextBox > 
    </InsertItemTemplate> 
</asp:TemplateField> 

Я не знаю, почему значение не сохраняется, поэтому как его исправить? Благодарим вас за помощь.

+0

Markup выглядит так: <% # Eval (" Year ")%> <жерех: TextBox ID = "PlantYear" Runat = "сервер" Text = '<% # GetYear()%>'>

ответ

0

В Private Sub DetailsView1_ItemInserting случае я изменил

Dim txtYearPlant Как TextBox = DirectCast (DirectCast (отправитель, DetailsView) .FindControl ("YearPlant"), TextBox)

К

Dim txtYearPlant Как TextBox = TryCast (view.FindControl ("YearPlant"), TextBox) e.Values.Add ("YearPlant", txtYearPlant.Text)

Так что теперь значение в текстовом поле PlantYear сохраняется в записи.

Смежные вопросы