Domanda

Ho un DataListItem che può potenzialmente essere un elenco a discesa o una casella di testo. Per ottenere il valore che dovrei fare:

 CType(item.FindControl("myControl"), TextBox).Text

o

CType(item.FindControl("myControl"), DropDownList).SelectedValue.ToString()

Il problema è che, se si tratta di un elenco a discesa, ottengo ..

  

Impossibile eseguire il cast di un oggetto di tipo   'System.Web.UI.WebControls.DropDownList'   digitare   'System.Web.UI.WebControls.TextBox'.

C'è un modo per verificare se il CType prenderà prima di Ctyping?

È stato utile?

Soluzione

Usa TryCast:

Dim txt as TextBox = TryCast(item.FindControl("myControl"), TextBox)
If txt Is Nothing Then
    TryCast(item.FindControl("myControl"), DropDownList)
End If
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top