У меня есть DataList, отображаемый на странице (Asp.Net3.5), которую пользователь может выбрать. Значение datakey выбранной строки затем сохраняется в базе данных.DataList Set SelectedIndex from DataKey Value
Если страница должна быть пересмотрена одним и тем же пользователем в какой-то момент в будущем, выбранное значение datakey будет восстановлено из БД. Я хотел бы использовать это значение datakey, чтобы выделить соответствующую строку в DataList.
Как я могу установить соответствующий SelectedIndex из списка DataList из этого значения DataKey?
Я пробовал следующее:
protected void dlCampChars_DataBinding(object sender, EventArgs e)
{
for (int i = 0; i < dlCampChars.Items.Count; i++)
{
// Ignore values that cannot be cast as integer.
try
{
if (dlCampChars.DataKeys[i].ToString() == lSelection.ToString())
{
Label28.Text = i + "";
dlCampChars.SelectedIndex = i + 1;
}
}
catch { }
}
}
Если я установить его в ItemDataBinding обновление SelectedIndex производится после того, как DL был связан и не имеет никакого эффекта. Есть идеи??
Благодаря
ОБНОВЛЕНО КОД
// if stored DataKey exists loop through DataTable
// looking for the index of the item matching the DataKey
int itemIndex = 0;
for (int i = 0; i < dt.Rows.Count; i++)
{
// check the appropriate "DataKey" column name of the current row
if (dt.Rows[i]["cha_Key"].ToString() == lSelection)
{
// match found, set index and break out of loop
itemIndex = i;
break;
}
}
Не следует ли использовать событие DataBound? сначала свяжите все, затем найдите элемент и выберите его в конце. –
В DataList отсутствует событие DataBound. – Munklefish