Hello community
 
I am learning asp.net...but i am not finding easy!
 
I have detailsview control with bound fields...some using  Templatefields.
 
I am trying to access values in those fields but i get nulls....i really dont know why..
 
I am proving all my code....
 
 
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Projects.aspx.vb" Inherits="Projects" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Projects Statuses</title>
   
    <style type="text/css">
        #FormView1
        {
            position:absolute;
            top:110px;
            margin-left:100px;
            height:482px;
            width: 552px;
            
            border-style:groove;
            border-style:solid;
            left: 180px;
        }
        #header
        {
            text-align:center;
        }
       
    </style>
</head>
<body>
    <form id="form1" runat="server">
    
    
  <h1 id="header" > Station Force Account Projects </h1> 
  <b> Choose Project to Edit </b>
   <asp:Label ID="lblResuts"  runat="server" Text="Record Edited" Visible="false">
         </asp:Label>
  <asp:SqlDataSource ID="dropDS" runat="server"
ConnectionString="<%$ ConnectionStrings:unrafpl%>" 
SelectCommand="Select Vote_ID, [Description] from Votes
inner join tblFinancialYrs on tblFinancialYrs.FinancialYearID=votes.FinancialYearID
Where tblFinancialYrs.CurrentFlag=1">
  </asp:SqlDataSource>
  <asp:DropDownList ID="drop1" runat="server" DataSourceID="dropDS" Width="257px"  
        AutoPostBack="true" DataTextField="Description" DataValueField="Vote_ID">
  
    </asp:DropDownList>
  <hr />
 
   <asp:DetailsView ID="FormView1" runat="server"  DataKeyNames="Vote_ID" AllowPaging="True" 
  CellPadding="4" ForeColor="#333333" 
        GridLines="None" AutoGenerateRows="False" 
        style="margin-left: 95px; width: 691px;" AutoGenerateEditButton="True">
       <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
       <CommandRowStyle BackColor="#E2DED6" Font-Bold="True" />
       <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
       <FieldHeaderStyle BackColor="#E9ECF1" Font-Bold="True" />
       <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
       <FooterTemplate>
        
       </FooterTemplate>
<Fields>
<asp:BoundField DataField = "Vote_ID" HeaderText = "ProjectID" 
ReadOnly = "True" />
<asp:BoundField DataField = "Description" HeaderText = "Project" />
<asp:BoundField DataField = "Quarter" HeaderText = "Quarter" />
<asp:TemplateField HeaderText="Project Category">
<ItemTemplate>
<asp:Label id="txtProject" runat="server" Text='<%# Eval("CategoryName") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="VoteCategory"  runat="server" DataSourceID="Category" DataValueField="CategoryName" DataTextField="CategoryName"  Width="300" SelectedValue='<%# Bind("CategoryName") %>'>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField = "PlannedAmount" HeaderText = "Planned Amount"  DataFormatString="{0:C}" />
<asp:BoundField DataField = "Aproved_Amount" HeaderText = "Actual Amount Received" DataFormatString="{0:C}" />
<asp:TemplateField HeaderText="Date Received">
<ItemTemplate>
<asp:Label ID="receiveddate" runat="server"  Text='<%# Eval("DateReceived","{0:dd/MM/yyyy}") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtReceivedDate" runat="server" Text='<%# Bind("DateReceived","{0:dd/MM/yyyy}") %>'></asp:TextBox>
<asp:CompareValidator ID="DateR" runat="server" Type="Date" Operator="DataTypeCheck" ControlToValidate="txtReceivedDate" 
 ErrorMessage="Please enter dates in format MM/DD/YYYY">
</asp:CompareValidator>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Planned Start Date">
<ItemTemplate>
<asp:Label ID="PlannedStartdate" runat="server" Text='<%# Eval("PlannedStartDate") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtPlannedStartDate" runat="server" Text='<%# Bind("PlannedStartDate") %>'></asp:TextBox>
<asp:CompareValidator ID="pstartdate" runat="server" Type="Date" Operator="DataTypeCheck" ControlToValidate="txtPlannedStartDate" 
 ErrorMessage="Please enter dates in format MM/DD/YYYY">
</asp:CompareValidator>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Actual Start Date">
<ItemTemplate>
<asp:Label ID="lblActualsdate" runat="server" Text='<%# Eval("ActualStartDate") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtActualStartDate" runat="server" Text='<%# Bind("ActualStartDate") %>'></asp:TextBox>
<asp:CompareValidator ID="DateActualStart" runat="server" Type="Date" Operator="DataTypeCheck" ControlToValidate="txtActualStartDate" 
 ErrorMessage="Please enter dates in format MM/DD/YYYY">
</asp:CompareValidator>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Planned Project End Date">
<ItemTemplate>
<asp:Label ID="plannedenddate" runat="server" Text='<%# Eval("PlannedEndDate") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtPlannedEndDate" runat="server" Text='<%# Bind("PlannedEndDate") %>'></asp:TextBox>
<asp:CompareValidator ID="Plannedend" runat="server" Type="Date" Operator="DataTypeCheck" ControlToValidate="txtPlannedEndDate" 
 ErrorMessage="Please enter dates in format MM/DD/YYYY">
</asp:CompareValidator>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Actual End Date">
<ItemTemplate>
<asp:Label ID="actualenddate" runat="server" Text='<%# Eval("ActualEndDate") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtActualEndDate" runat="server" Text='<%# Bind("ActualEndDate") %>'></asp:TextBox>
<asp:CompareValidator ID="ActualEnddate" runat="server" Type="Date" Operator="DataTypeCheck" ControlToValidate="txtActualEndDate" 
 ErrorMessage="Please enter dates in format MM/DD/YYYY">
</asp:CompareValidator>
</EditItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField = "FinancialYear" HeaderText = "Financial Year" DataFormatString="{0:MM/dd/yyyy}"/>
<asp:TemplateField HeaderText= "Remarks">
<EditItemTemplate>
<asp:TextBox ID="txtremarks"  runat="server"  Width="300" Height="80" TextMode="MultiLine" Text='<%# Bind("remarks") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
</Fields>  
     <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
     <EditRowStyle BackColor="#999999" />
     <AlternatingRowStyle BackColor="White" ForeColor="#284775" />   
    
</asp:DetailsView>
  
 <asp:SqlDataSource ID="Category" runat="server"
ConnectionString="<%$ ConnectionStrings:unrafpl%>" 
SelectCommand="select CategoryName from tblVoteCategories">
  </asp:SqlDataSource>
    </form>
</body>
</html>
Here i use findcontrol which returns nulls...
 
 
Protected Sub FormView1_ItemUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewUpdateEventArgs) Handles FormView1.ItemUpdating
        Try
            Dim id As Integer = FormView1.DataKey.Value
            Dim voteTextbox As TextBox = FormView1.FindControl("Description")
            Dim categoryTextbox As DropDownList = FormView1.FindControl("VoteCategory")
            Dim quarterTextbox As TextBox = FormView1.FindControl("Quarter")
            Dim plannedTextbox As TextBox = FormView1.FindControl("PlannedAmount")
            Dim approvedTextbox As TextBox = FormView1.FindControl("Aproved_Amount")
            Dim datereceivedTextbox As TextBox = FormView1.FindControl("txtReceivedDate")
            Dim plannedstartdateTextbox As TextBox = FormView1.FindControl("txtPlannedStartDate")
            Dim ActualStartDateTextbox As TextBox = FormView1.FindControl("txtActualStartDate")
            Dim PlannedEndDateTextbox As TextBox = FormView1.FindControl("txtPlannedEndDate")
            Dim ActualEndDateTextbox As TextBox = FormView1.FindControl("txtActualEndDate")
            Dim remarksTextbox As TextBox = FormView1.FindControl("txtremarks")
            Dim fyvoteTextbox As TextBox = FormView1.FindControl("FinancialYear")
            Dim myvote As String = voteTextbox.Text.ToString
            Dim mycategory As String = categoryTextbox.SelectedValue.ToString
            Dim myq As String = quarterTextbox.Text.ToString
            Dim pAmount As Decimal = CDec(plannedTextbox.Text.ToString)
            Dim aAmount As Decimal = CDec(approvedTextbox.Text)
            Dim dReceived As Date = Date.Parse(datereceivedTextbox.Text)
            Dim plannedsDate As Date = Date.Parse(plannedstartdateTextbox.Text)
            Dim aactualsDate As Date = Date.Parse(ActualStartDateTextbox.Text)
            Dim pplannedeDate As Date = Date.Parse(PlannedEndDateTextbox.Text)
            Dim aactualeDate As Date = Date.Parse(ActualEndDateTextbox.Text)
            Dim fy As String = fyvoteTextbox.Text
            Dim myremarks As String = remarksTextbox.Text
            cnn = New SqlConnection(strconnection)
            cnn.Open()
            cm = New SqlCommand("spEditVote", cnn)
            cm.CommandType = CommandType.StoredProcedure
            cm.Parameters.Add("@voteid", SqlDbType.Int).Value = id
            cm.Parameters.Add("@vote", SqlDbType.NVarChar).Value = myvote
            cm.Parameters.Add("@category", SqlDbType.NVarChar).Value = mycategory
            cm.Parameters.Add("@quarter", SqlDbType.NVarChar).Value = myq
            cm.Parameters.Add("@plannedamount", SqlDbType.Decimal).Value = pAmount
            cm.Parameters.Add(",@approvedamount", SqlDbType.Decimal).Value = aAmount
            cm.Parameters.Add(",@datereceived", SqlDbType.Date).Value = dReceived
            cm.Parameters.Add("@pStartDate", SqlDbType.Date).Value = plannedsDate
            cm.Parameters.Add("@aStartDate", SqlDbType.Date).Value = aactualsDate
            cm.Parameters.Add("@pEndDate", SqlDbType.Date).Value = pplannedeDate
            cm.Parameters.Add("@aEndDate", SqlDbType.Date).Value = aactualeDate
            cm.Parameters.Add("@remarks", SqlDbType.NVarChar).Value = myremarks
            cm.Parameters.Add("@financialyr", SqlDbType.NVarChar).Value = fy
            Dim i As Integer = cm.ExecuteNonQuery()
            lblResuts.Text = i & "Record Edited"
            lblResuts.Visible = True
        Catch ex As Exception
            lblResuts.Text = Err.Description
            lblResuts.Visible = True
        Finally
            If Not cnn.State <> ConnectionState.Closed Then
                cnn.Close()
            End If
        End Try
    End Sub
Here some other code in case it is relevant
 
 
 Private Sub BindData()
        strSQL = "Select  *  from vProjects"
        cnn = New SqlConnection(strconnection)
        Try
            cnn.Open()
            cm = New SqlCommand(strSQL, cnn)
            adapt = New SqlDataAdapter
            adapt.SelectCommand = cm
            dt = New DataSet
            tb = New DataTable
            adapt.Fill(dt, "tb")
            FormView1.DataSource = dt
            FormView1.DataMember = "tb"
            FormView1.DataBind()
        Catch ex As Exception
            lblResuts.Text = Err.Description
        Finally
            If Not cnn.State <> ConnectionState.Closed Then
                cnn.Close()
            End If
        End Try
    End Sub
   
   
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        BindData()
    End Sub
    Protected Sub FormView1_ModeChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewModeEventArgs) Handles FormView1.ModeChanging
        If Not e.NewMode = DetailsViewMode.Edit Then
            FormView1.ChangeMode(e.NewMode)
            BindData()
        End If
    End Sub
    Protected Sub FormView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewPageEventArgs) Handles FormView1.PageIndexChanging
        FormView1.PageIndex = e.NewPageIndex
        BindData()
    End Sub
I guess something might be getting messy with the mode changing event... a postback??
But if i remove the databinding code, i get an error!
 
Please any suggestions why findcontrol returns null??
 
Ronald