Exemplo de como inserir um DropDownList dentro de um Repeater utilizando um relação entre dois DataSets e pegando os valores selecionados posteriormente.
Preenchendo os DataSets e fazendo a relação entre eles:
default.aspx.cs
strSQL = @"SELECT * FROM tblUsuarios";
SqlCommand usersCommand = new SqlCommand(strSQL, myConnection);
SqlDataAdapter usersDataAdapter = new SqlDataAdapter(usersCommand);
DataSet usersDataSet = new DataSet();
usersDataAdapter.Fill(usersDataSet, "Users");
strSQL = @"SELECT * FROM tblPaises";
SqlCommand paisesCommand = new SqlCommand(strSQL, myConnection);
SqlDataAdapter paisesDataAdapter = new SqlDataAdapter(paisesCommand);
DataSet paisesDataSet = new DataSet();
paisesDataAdapter.Fill(paisesDataSet, "Países");
usersDataSet.Relations.Add("relation", usersDataSet.Tables[0].Columns["paisID"],
paisesDataSet.Tables[0].Columns["paisID"], false);
repeater1.DataSource = usersDataSet.Tables[0];
repeater1.DataBind();
default.aspx
<asp:Repeater ID="repeater1" runat="server">
<ItemTemplate>
<asp:DropDownList ID="ddlPaises"
DataSource='<%#((DataRowView)Container.DataItem).CreateChildView("relation")%>'
runat="server" DataTextField="paisNome" DataValueField="paisID"/>
</ItemTemplate>
</asp:Repeater>
Pegando os valores selecionados:
default.aspx.cs
protected void btnSave_Click(object sender, EventArgs e)
{
for (int i = 0; i < repeater1.Items.Count; i++)
{
DropDownList ddlPaises =
(DropDownList)repeater1.Items[i].FindControl("ddlPaises");
string strPaisSelecionado = ddlPaises.SelectedValue;
}
}