Based on the code, it looks like a dropdownlist does exists from before. In the RowDataBound event you are trying to populate data in that pre-existing dropdown. Since, it pre-exists, you can define a selected change index for it.
In case you want to define it at runtime in RowDataBound, then you need to add this:
AddHandler ddlFilter.SelectedIndexChanged, AddressOfMe.ddl2_SelectedIndexChanged
ddlFilter.AutoPostBack = truePrivateSub ddlFilter_SelectedIndexChanged(ByVal sender AsObject, ByVal e As EventArgs)