我在做逗号分离后检索一堆字符串。接下来我想将它绑定到gridview。但是,它会引发错误:
在所选数据源上找不到名称为_barcodes的字段或属性。
以下是代码:
private void RetrieveScannedBarcodes()
////code to retrieve the barcodes
foreach (var item in ScannedBarcodes)
{
_barcodes.AddRange(item.Split(','));
foreach (var b in _barcodes)
{
gvScannedBarcodes.DataSource = b;
gvScannedBarcodes.DataBind();
}
}
和gridview代码:
<asp:GridView ID="gvScannedBarcodes" runat="server" AllowSorting="true"
AutoGenerateColumns="false" PagerSettings-Mode="NumericFirstLast" PageSize="25"
Width="741px">
<Columns>
<asp:BoundField DataField="_barcodes" HeaderText="Barcodes" ItemStyle-HorizontalAlign="Center" HeaderStyle-Width="50" />
</Columns>
</asp:GridView>
任何形式的帮助将不胜感激。提前谢谢。
答案 0 :(得分:2)
在。上找不到名称为_barcodes的字段或属性 选定的数据来源。
您将字符串作为数据源绑定到GridView,而不是像DataTable
List
这样具有名为_barcodes
的列或属性的集合。
您有一个包含逗号分隔条形码字符串的列表ScannedBarcodes
,您可能希望该列表中的所有条形码都与GridView绑定。现在,您必须将ScannedBarcodes
中的所有条形码添加到某个集合中,并将_barcodes
作为列。
您可以使用Linq查询使用SelectMany
和Select
获取所有条形码,并将结果放入具有列名_barcodes
的匿名对象列表中。
gvScannedBarcodes.DataSource = ScannedBarcodes.SelectMany(s=>s.Split(',')
.Select(b=>new {_barcodes = b}));
gvScannedBarcodes.DataBind();
为了便于理解,请参阅以下示例。
List<string> list = new List<string>(new string []{"1,2,3","4,5,6"});
gvScannedBarcodes.DataSource = list.SelectMany(l=>l.Split(',')
.Select(b=>new {_barcodes = b}));
gvScannedBarcodes.DataBind();
答案 1 :(得分:0)
您可以直接将List
绑定到GridView。
gvScannedBarcodes.DataSource = ScannedBarcodes;
gvScannedBarcodes.DataBind();
DataField
必须与Class中的属性匹配。
class Barcode
{
public string myBarcode { get; set; }
}
<asp:BoundField DataField="myBarcode"