我在DataList2
里面有一个嵌套的DataList结构DataList1
,我在Buttons
内有DataList2
执行某些命令,我想调用一个带有as的过程输入datakeyfield
的{{1}}和DataList1
的{{1}},但是在阅读datakeyfield
的{{1}}时出现问题,这是我的代码:
.aspx.cs代码
DataList2
错误:
当前上下文中不存在名称“DataList2”
答案 0 :(得分:1)
假设您的数据在DataList1中产生多行,则存在多个DataList2。因此,ASP.NET不会使DataList2成为您的页面(代码隐藏)类的成员。
幸运的是,在这种情况下,sender(你称之为source,同样的东西)应该是你想要的DataList2。尝试将其转换为DataList,看看会发生什么。
答案 1 :(得分:1)
你犯了几个错误。第一个DataList2
无法直接访问(正如您所注意到的)。第二,您对父级和子级DataList使用相同的ItemIndex
。但由于它们是嵌套的,因此它们没有相同的值,但需要通过不同的数组索引进行访问。
protected void DataList2_ItemCommand(object source, DataListCommandEventArgs e)
{
//cast the source back to a the datalist
DataList datalist2 = source as DataList;
//get the value from the nested datalist
string childValue = (string)datalist2.DataKeys[e.Item.ItemIndex];
//get the parent object of datalist2
DataListItem dli = datalist2.NamingContainer as DataListItem;
//get the value from the parent datalist using the itemindex of the parent, not the child
int parentValue = (int)DataList1.DataKeys[dli.ItemIndex];
//show results
Label1.Text = parentValue + " - " + childValue;
//rebind datalist2
datalist2.DataBind();
}