下面我拿一个列表并将其转换为数据表并将其绑定到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])
答案 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 Class和ListViewItem.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);
}
}