I figured out a work-around for my issue.
I bound the data from my cascading drop down extender instead of the drop down control itself. This data appeared as the ID followed by ":::" followed by the text value (ex. 13:::sometext)
To deal with that, I created an onindexchange sub on the drop down box that uses indexof and substring to pull out the text I want - and then sets the final value to a session variable.
Then I modified my insert and update parameter fields for my detailsview to use a session parameter instead of a regular parameter for the affected field.
Nobody is going to call it elegant, but it gets the job done.
Private Sub proc_trim(ByVal sender As Object, ByVal e As System.EventArgs)
Dim ddlvar As CascadingDropDown = CType(DetailsView1.FindControl("ddlprocedure_cdd"), CascadingDropDown)
Dim sbad As String = ddlvar.SelectedValue
If sbad.IndexOf(":::") < 0 Then
Session("clean_proc") = sbad
Else
Dim i As Integer = sbad.IndexOf(":::")
Dim smid As String = sbad.Substring(i)
Dim sneed As String = smid.Substring(3)
Session("clean_proc") = sneed
End If
End Sub
.....
<asp:DropDownList ID="ddlprocedure" runat="server" OnSelectedIndexChanged="proc_trim"
DataTextField="Procedure" DataValueField="Procedure">
</asp:DropDownList>
<asp:CascadingDropDown ID="ddlprocedure_cdd" runat="server"
TargetControlID="ddlprocedure"
Category="Procedure"
PromptText="Select Procedure"
LoadingText="Please wait..."
ServicePath="~/ProcedureService.asmx"
ServiceMethod="GetProcedure"
ParentcontrolID="ddlSubCategory">
</asp:CascadingDropDown>
.....
<InsertParameters>
<asp:SessionParameter Name="procedure" SessionField="clean_proc" Type="String" />
</InsertParameters>