Andrew
asked on
Object reference not set to an instance of an object.
Cant figure out why this error is happening... It happens in DetailsView1_DataBound after the SaveButton_Click event shown below.
<asp:DetailsView ID="DetailsView1" runat="server" DataSourceID="sqlds_SelectedRec" AutoGenerateRows="False"
DefaultMode="Edit" DataKeyNames="TID" BorderStyle="None" Width="500px" CellPadding="3" GridLines="None" CellSpacing="2"
InsertRowStyle-Wrap="False" RowStyle-Wrap="False">
<FieldHeaderStyle Wrap="False" HorizontalAlign="Left" />
<Fields>
<asp:TemplateField HeaderText="Department" HeaderStyle-CssClass="bold">
<EditItemTemplate>
<asp:DropDownList ID="ddDept" runat="server" AutoPostBack="True" DataSourceID="sqlds_DDDept" DataTextField="DESCRIPTION"
DataValueField="ENTRYID" AppendDataBoundItems="True" OnSelectedIndexChanged="ddDept_SelectedIndexChanged" OnDataBound="ddDept_OnDataBound">
<asp:ListItem></asp:ListItem>
</asp:DropDownList>
<asp:RequiredFieldValidator ID="rfvDept" runat="server" ErrorMessage="REQUIRED" CssClass="RequiredField" ControlToValidate="ddDept"></asp:RequiredFieldValidator>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Activity Number" HeaderStyle-CssClass="bold">
<EditItemTemplate>
<asp:DropDownList ID="ddActivity" runat="server" AutoPostBack="False" DataSourceID="sqlds_DDActNum" DataTextField="DESCRIPTION"
DataValueField="PROJECTID" AppendDataBoundItems="True">
<asp:ListItem Value="" Text="Selection required"></asp:ListItem>
<asp:ListItem Value="99" Text="Not applicable"></asp:ListItem>
</asp:DropDownList>
<asp:RequiredFieldValidator ID="rfvActivity" runat="server" ErrorMessage="REQUIRED" CssClass="RequiredField" ControlToValidate="ddActivity" Display="Dynamic"></asp:RequiredFieldValidator>
</EditItemTemplate>
</asp:TemplateField>
Protected Sub DetailsView1_DataBound(sender As Object, e As EventArgs) Handles DetailsView1.DataBound
Using stCon As New SqlConnection(ConfigurationManager.ConnectionStrings("DirectoryConnectionString").ConnectionString)
stCon.Open()
Dim ddDept As DropDownList = DirectCast(DetailsView1.FindControl("ddDept"), DropDownList)
sLabID = CType(Session("intAcctID"), String)
Dim selCommand4 As New SqlCommand("SELECT ACCT_UNIT FROM [CorpCard_new].[dbo].[Trans] WHERE TID=@TID", stCon)
selCommand4.Parameters.Add("@TID", SqlDbType.Int).Value = TID
Dim sAcctUnit As String = CType(selCommand4.ExecuteScalar, String)
If sAcctUnit = "0" Then
ddDept.SelectedValue = sLabID
Else
ddDept.SelectedValue = sAcctUnit
End If
sDeptID = ddDept.SelectedValue
Protected Sub SaveButton_Click(sender As Object, e As EventArgs) Handles SaveButton.Click
If sender.CommandName="Update" And Page.IsValid Then
Using stCon As New SqlConnection(ConfigurationManager.ConnectionStrings("CorpCardConnectionString").ConnectionString)
stCon.Open()
Dim item As GridDataItem = DirectCast(RadGrid1.SelectedItems(0), GridDataItem)
TID = item("TID").Text
Dim ddDept As DropDownList = DirectCast(DetailsView1.FindControl("ddDept"), DropDownList)
Dim sACCT_UNIT As String = ddDept.SelectedValue.ToString()
Dim ddActNum As DropDownList = DirectCast(DetailsView1.FindControl("ddActivity"), DropDownList)
Dim sAcctNum As String = ddActNum.SelectedValue.ToString()
Dim ddExpType As DropDownList = DirectCast(DetailsView1.FindControl("ddExpType"), DropDownList)
sExpType = ddExpType.SelectedValue.ToString()
Dim txtPurpose As textbox = DirectCast(DetailsView1.FindControl("txtBP"), textbox)
Dim txtPersEnt As textbox = DirectCast(DetailsView1.FindControl("txtPersEnt"), textbox)
Dim txtDestCity As textbox = DirectCast(DetailsView1.FindControl("txtDestCity"), textbox)
Dim txtPartyInfo As textbox = DirectCast(DetailsView1.FindControl("txtPartyInfo"), textbox)
sqlds_SelectedRec.UpdateCommand = "UPDATE [CorpCard_new].[dbo].[Trans] SET ACCT_UNIT=@ENTRYID, ActivityNum=@ActivityCode, ExpID=@ExpID, Purpose=@Purpose, EntertainWho=@EntertainWho, TravelTo=@TravelTo, ThirdPartyInfo=@ThirdPartyInfo, LastSaved=@LastSaved WHERE TID=@TID"
sqlds_SelectedRec.UpdateParameters("TID").DefaultValue = TID
sqlds_SelectedRec.UpdateParameters("ENTRYID").DefaultValue = sACCT_UNIT
sqlds_SelectedRec.UpdateParameters("ExpID").DefaultValue = sExpType
sqlds_SelectedRec.UpdateParameters("ActivityCode").DefaultValue = sAcctNum
sqlds_SelectedRec.UpdateParameters("Purpose").DefaultValue = txtPurpose.text
sqlds_SelectedRec.UpdateParameters("EntertainWho").DefaultValue = txtPersEnt.text
sqlds_SelectedRec.UpdateParameters("TravelTo").DefaultValue = txtDestCity.text
sqlds_SelectedRec.UpdateParameters("ThirdPartyInfo").DefaultValue = txtPartyInfo.text
sqlds_SelectedRec.UpdateParameters("LastSaved").DefaultValue = System.DateTime.Now().ToString()
sqlds_SelectedRec.Update()
DetailsView1.DataBind()
RadGrid1.Rebind()
End Using
End If
End Sub
ddept might be null if the control isn't found.
ASKER
Dim ddDept As DropDownList = DirectCast(DetailsView1.Fi ndControl( "ddDept"), DropDownList)
ddDept shows as NOTHING when I step through up to the error. Why is that?
ddDept shows as NOTHING when I step through up to the error. Why is that?
i would say that it isn't finding ddept. i think there is another parameter in findcontrol that would make the search more thorough. also make sure that it is really a dropdownlist.
ASKER
it is definitely a dropdownlist
ASKER
<asp:TemplateField HeaderText="Department" HeaderStyle-CssClass="bold ">
<EditItemTemplate>
<asp:DropDownList ID="ddDept" runat="server" AutoPostBack="True" DataSourceID="sqlds_DDDept " DataTextField="DESCRIPTION "
DataValueField="ENTRYID" AppendDataBoundItems="True " OnSelectedIndexChanged="dd Dept_Selec tedIndexCh anged" OnDataBound="ddDept_OnData Bound">
<asp:ListItem></asp:ListIt em>
</asp:DropDownList>
<asp:RequiredFieldValidato r ID="rfvDept" runat="server" ErrorMessage="REQUIRED" CssClass="RequiredField" ControlToValidate="ddDept" ></asp:Req uiredField Validator>
</EditItemTemplate>
</asp:TemplateField>
<EditItemTemplate>
<asp:DropDownList ID="ddDept" runat="server" AutoPostBack="True" DataSourceID="sqlds_DDDept
DataValueField="ENTRYID" AppendDataBoundItems="True
<asp:ListItem></asp:ListIt
</asp:DropDownList>
<asp:RequiredFieldValidato
</EditItemTemplate>
</asp:TemplateField>
to trouble shoot i would do a recursive search of all controls and make sure the id isn't getting change and/or that its there at all.
ASKER
this ddDept control within the detailview also resides inside a panel. Could that have something to do with it?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.