With the arbitrary datasets
datasets = {dataset1, dataset2, dataset3} = RandomReal[#, 100] & /@ {1, 2, 3};
one can pre-render the plots and add an empty plot for the case when no dataset is selected
plots = Append[
MapThread[ListPlot[#1, Joined -> True, PlotStyle -> #2] &,
{datasets, ColorData[97] /@ Range[3]}],
ListPlot[{}]];
A relative intuitive way to interactively select the datasets to be plotted within Manipulate
can be achieved by creating a clickable line legend. Different control types can be used to achieve this. In my opinion the most unambiguous one is generated using checkboxes
Manipulate[Show[plots[[datasetNo /. {} -> 4]], PlotRange -> All],
{{datasetNo, {1}, ""},
Thread[Range[3] -> MapThread[
Row[{Pane@Graphics[{#1, Rectangle[{0, 0}, {10, 1}]}, ImageSize -> 20],
" Dataset " <> ToString@#2}, BaselinePosition -> Center] &,
{ColorData[97] /@ Range[3], Range[3]}]],
ControlType -> CheckboxBar, BaselinePosition -> Center, Method -> "Active",
Appearance -> "Vertical"}, ControlPlacement -> Right]

but ListPicker
and TogglerBar
give good alternatives, too:


Update: Dimming the inactive line legend items
datasetNames = Array[" Dataset " <> ToString@# &, 3]
Manipulate[
Show[plots[[datasetNo /. {} -> 4]], PlotRange -> All],
Row[{
Control[{{datasetNo, {1, 3}, ""}, {1 -> "", 2 -> "", 3 -> ""},
ControlType -> CheckboxBar, BaselinePosition -> Center,
Method -> "Active", Appearance -> "Vertical"}],
Dynamic@Column[
MapThread[
Row[{Pane@
Graphics[{#1, Rectangle[{0, 0}, {10, 1}]}, ImageSize -> 20],
MapAt[Style[#, Opacity[0.35]] &, datasetNames,
List /@ Complement[Range[3], datasetNo]][[#2]]},
BaselinePosition -> Center] &,
{MapAt[Opacity[0.1, #] &, ColorData[97] /@ Range[3],
List /@ Complement[Range[3], datasetNo]], Range[3]}],
Left, 0.9, ItemSize -> {Automatic, 0}, BaselinePosition -> Center]}],
ControlPlacement -> Right]

WHO -> "is in the first base"
? $\endgroup$