Как найти элемент списка данных, который вызывает событие команды
У меня есть nested-datalist
и на ребенка datalist
, itemcommand
событие, я делаю что-то вроде этого
if (e.CommandName == "Delete")
{
string keyID;
int idx = e.Item.ItemIndex;
DataClasses1DataContext db = new DataClasses1DataContext();
DataList dl = Session["dl"] as DataList;
object thisKey = dl.DataKeys[idx];
keyID = thisKey.ToString();
foreach (DataListItem item in dl.Items)
{
LinkButton lb = item.FindControl("LinkButton1") as LinkButton;
ImageButton ib = item.FindControl("ImageButton1") as ImageButton;
string s = item.ItemIndex.ToString();
string j = s;
if (item.ItemIndex == idx)
{
string dds = ib.AlternateText;
Label ServiceCommentIDLabel = item.FindControl("ServiceCommentIDLabel") as Label;
string ds = ServiceCommentIDLabel.Text;
ServiceComment sc = db.ServiceComments.Where(o => o.ServiceCommentID == long.Parse(ServiceCommentIDLabel.Text)).First();
db.ServiceComments.DeleteOnSubmit(sc);
Response.Redirect("Services.aspx");
}
}
}
Ни его выбор точный datakey
ни foreach
цикл, проходящий через каждый item
из datalist
,
1 ответ
Вы получаете DataList
от Session
что не очень хорошая вещь. Вы должны конвертировать DataList
от Object
источник в ItemCommand
событие как это:
protected void Child_DataList_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
// get DataList from the source
DataList dl = source as DataList;
object thisKey = dl.DataKeys[e.Item.ItemIndex];
// do your work here
}
}