嵌套datalist的问题

时间:2011-12-31 17:50:01

标签: c# asp.net visual-studio-2010 datalist nested-datalist

我在DataList2里面有一个嵌套的DataList结构DataList1,我在Buttons内有DataList2执行某些命令,我​​想调用一个带有as的过程输入datakeyfield的{​​{1}}和DataList1的{​​{1}},但是在阅读datakeyfield的{​​{1}}时出现问题,这是我的代码:

.aspx.cs代码

DataList2

错误:

  

当前上下文中不存在名称“DataList2”

2 个答案:

答案 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();
}