Почему возвращаемое значение не сохраняется в 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>
Разметка выглядит так:
<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>
Я не знаю, почему значение не сохраняется, так как я могу это исправить? Спасибо за помощь.
1 ответ
В событии Private Sub DetailsView1_ItemInserting я изменил
Dim txtYearPlant As TextBox = DirectCast(DirectCast(отправитель, DetailsView).indControl("YearPlant"), TextBox)
К
Dim txtYearPlant As TextBox = TryCast(view.FindControl("YearPlant"), TextBox) e.Values.Add("YearPlant", txtYearPlant.Text)
Поэтому теперь значение в текстовом поле PlantYear сохраняется в записи.