例如,假设我们绑定到一个名为的自定义类Record
public class Record
{
public int Id;
public string Value;
}
如果您在 Repeater.OnItemCreated 事件上放置自定义逻辑,您可以将主键附加到下拉列表的 id
protected void Repeater_ItemCreated(object sender, RepeaterItemEventArgs e)
{
if (!(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem))
return;
var dataItem = e.Item.DataItem as Record;
if (dataItem == null) return;
var dropdown = e.Item.FindControl("myDropDown") as DropDownList;
if (dropdown == null) return;
dropdown.ID = dropdown.ID + dataItem.Id;
}
然后在 SelectedIndexChange 上,您可以从触发事件的下拉列表中拉出 id。
protected void SelectedIndexChanged(object sender, EventArgs e)
{
var dropdown = sender as DropDownList;
if (dropdown == null) return;
var stringId = dropdown.ID.Replace("myDropDown", "");
int id;
if (Int32.TryParse(stringId, out id))
{
updateRecord(id, dropdown.SelectedValue);
}
}
这是一个非常丑陋的黑客,但它应该允许你做你想做的事。