如何枚举ASP listview控件?

时间:2018-05-22 13:56:56

标签: html asp.net listview

enter image description here下面我拿一个列表并将其转换为数据表并将其绑定到ASP listview控件。

我想要一个函数将它从asp listview控件转换回List并且无法弄清楚如何获取这些项目?在Visual Studio调试中,数据项是否为空?它有正确的计数,但没有值?我想列举所有行。

import numpy as np
a = np.ma.masked_array([[0,0,0], [1,2,3],[4,5,6]], mask=[[True,True, True], [True,True, False],[False,False,True]])

a.compressed()

array([3, 4, 5])

2 个答案:

答案 0 :(得分:0)

这是一个愚蠢的IMO,所以最有可能是更好的方法,但看起来你必须在创建listview期间将数据绑定到一个对象。我无法在任何地方找到一个好的答案,这是一个小时的搜索和尝试不同的半相关答案组合的汇编。

在HTML方面,您必须设置' onitemdatabound'到c#函数。下面的代码也不需要使用" |"进行分段,如果您复制/粘贴我的函数,我会将其留下以便于阅读。

我很高兴仍然可以阅读有关如何做得更好的回复,以便我可以学习。

html:
<asp:ListView ID="lvwOutput" runat="server" onitemdatabound="lvwOutput_ItemDataBound">


asp:
           private List<string> lvwOutputItemsDataBoundToList = new List<string>();
    private List<string> lvwOutputItemsDataBoundToListOriginal = new List<string>();
    protected void lvwOutput_ItemDataBoundToList(object sender, ListViewItemEventArgs e)
    {
        if (e.Item.ItemType == ListViewItemType.DataItem)
        {
            ListViewDataItem dataItem = (ListViewDataItem)e.Item;
            object o = (object)dataItem.DataItem;
            System.Data.DataRowView rowView = e.Item.DataItem as System.Data.DataRowView;
            object[] itemArray = rowView.Row.ItemArray;

            string itemBound = "";
            foreach(object item in itemArray)
            {
                itemBound += item.ToString() + "|";
            }

            if (itemBound.EndsWith("||"))
            {
                int index = itemBound.Length;
                itemBound = itemBound.Remove(index - 2);
            }

            if (itemBound.EndsWith("|"))
            {
                int index = itemBound.Length;
                itemBound = itemBound.Remove(index - 1);
            }

            lvwOutputItemsDataBoundToList.Add(itemBound);
        }

        ViewState["lvwOutputItemsDataBoundToList"] = lvwOutputItemsDataBoundToList;

    }



private void filter()
    {
        lvwOutputItemsDataBoundToList = (List<string>)ViewState["lvwOutputItemsDataBoundToList"];
        lvwOutputItemsDataBoundToListOriginal = lvwOutputItemsDataBoundToList;

        foreach (string item in lvwOutputItemsDataBoundToList)
        {
            string[] itemSplit = item.Split('|');
        }


    }

答案 1 :(得分:0)

要枚举ListViewItems,请参阅ListView.ListViewItemCollection ClassListViewItem.SubItems Property

List<string> lstItems = new List<string>():
foreach(ListViewItem itemRow in lvwOutput)
{
    for (int i = 0; i < itemRow.SubItems.Count; i++)
    {
        lstItems.Add(itemRow.SubItems[i].Text);
    }
}