2017-04-07 184 views
2

我在做逗號分隔後檢索一串字符串。接下來我想將它綁定到一個gridview。但是,它拋出一個錯誤:如何將列表項綁定到gridview

A field or property with the name _barcodes was not found on the selected data source.

下面是代碼:

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> 

任何形式的幫助將不勝感激。提前致謝。

回答

2

A field or property with the name _barcodes was not found on the selected data source.

你要綁定的字符串作爲數據源到GridView控件,而不是像收集的List有一個名爲_barcodes列或財產DataTable

您有一個列表ScannedBarcodes,其中包含以逗號分隔的條形碼字符串,並且您可能希望列表中的所有條形碼都與GridView綁定。現在您必須將ScannedBarcodes中的所有條形碼都列爲_barcodes列。

您可以使用LINQ查詢中使用SelectManySelect讓所有的條形碼,並把結果成列名_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(); 
+0

你救了我的一天...非常感謝 – Arka

+0

歡迎你,不勝意謝。 – Adil

0

您可以直接將List綁定到GridView。

gvScannedBarcodes.DataSource = ScannedBarcodes; 
gvScannedBarcodes.DataBind(); 

DataField必須匹配類中的屬性。

class Barcode 
{ 
    public string myBarcode { get; set; } 
} 

<asp:BoundField DataField="myBarcode"