如何从DataList(A)内的DataList(B)获取选定索引?

时间:2019-03-23 20:59:45

标签: c# html asp.net datalist

我无法获取数据列表内部的数据列表的索引。

我在DataList中有一个DataList。

要澄清图片:

<DataList ID="A">
         <DataList ID="B">
         </DataList>
   </DataList>

我需要DataList B的Selected Index值,以便可以在MySql表中使用它。

我在CS中尝试通过以下方式获取索引值:

DataList BDL = (DataList)e.Item.FindControl("B");
int Index = BDL.DataKeys[e.Item.ItemIndex].ToString();

但是它总是返回此错误: System.NullReferenceException:'对象引用未设置为对象的实例。'

BDL为空。

protected void BDataList_ItemCommand(object source, DataListCommandEventArgs e)
    {
                DataList BDL= (DataList)e.Item.FindControl("BDataList");
                int index = e.Item.ItemIndex;
                MyLabel.Text = "" + BDL.SelectedIndex;
    }




<DataList ID="A" OnItemDataBound="ADataList_ItemDataBound" OnItemCommand="ADataList_ItemCommand" DataKeyField="ID">
         <DataList ID="B" OnItemCommand="BDataList_ItemCommand" DataKeyField="ID">
         </DataList>
</DataList>

2 个答案:

答案 0 :(得分:0)

DataList BDL = (DataList)e.Item.FindControl("B");
int Index = BDL.DataKeys[BDL.Item.ItemIndex].ToString();

我认为您对两个数据列表使用了相同的索引。这段代码可能对您来说是错误的,但是您的算法应如下所示:

  1. 获取所选的第二个数据列表
  2. 在第二个列表中获取选定的值

答案 1 :(得分:0)

这解决了我的问题:https://forums.asp.net/t/2154278.aspx?How+to+get+Selected+Index+from+DataList+B+that+is+inside+DataList+A+

我只需要做

DataList BDL =    e.Item.NamingContainer as DataList;