2011-04-13 96 views
2

這應該很簡單,但我很失敗這場戰鬥。我有一個gridview。我只想讓用戶能夠輸入名稱,點擊添加並添加值。我也想使用刪除命令,如果他們犯了一個錯誤。我試過Eval和Bind。但有些事情一直在出錯。如何將gridview綁定到字符串的通用列表?

我在輸入第一個文本框。並在頁腳的文本框中輸入值。當它們被輸入時,它們被添加到通用列表(字符串)並重新綁定到gridview。但是當它嘗試綁定到列表時失敗。

在下面的標記,DataItem.Alias < - 別名實際上是通用的清單

<asp:GridView ID="gvAlias" 
    runat="server"  
    ShowFooter="True" AutoGenerateColumns="false" 
    ShowHeaderWhenEmpty="True" ShowHeader="False" > 
    <Columns> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <%# DataBinder.Eval(Container, "DataItem.Alias")%> /> 
       </ItemTemplate> 
       <FooterTemplate> 
        <asp:TextBox ID="txtFooterAlias" runat="server" /> 
        <asp:LinkButton ID="btnFooterAdd" runat="server" OnClick="AddFromFooter">Add New</asp:LinkButton> 
       </FooterTemplate> 
      </asp:TemplateField> 
      <asp:CommandField ShowDeleteButton="True" /> 
     </Columns> 
     <EmptyDataTemplate> 
      <asp:TextBox ID="txtEmptyAlias" runat="server" /> 
      <asp:LinkButton ID="btnEmptyAdd" runat="server" OnClick="AddFromEmpty">Add New</asp:LinkButton> 
     </EmptyDataTemplate> 
</asp:GridView> 

後面的代碼名稱...

公用Sub BindGridView()

Dim oThis As This 'this is a class I have that has a property which is a generic list of string 

    gvAlias.DataSource = oThis.Alias.ToArray 
    gvAlias.DataBind() 

End Sub

+0

你能細說「的東西一直走錯了」這個「別名」字段綁定? – Marcie 2011-04-13 14:51:35

回答

0

從您的描述中可以看出,Alia的類型s不清楚。它是匿名類型嗎?

但是,非常簡單的綁定網格與字符串列表的方式是將它們轉換爲任意時間。

var aliasList = new List<string>() { 
       "Value1", 
       "Value2", 
       "Value3" 
      }; 
//This will create new anonymous type with Name field. 
var tryName = (from nm in nameList 
       select new { Alias = nm }).ToArray(); 
gvAlias.DataSource = tryName; 
gvAlias.DataBind(); 

現在你可以在你的標記

<asp:TemplateField> 
       <ItemTemplate> 
        <%# DataBinder.Eval(Container, "Alias")%> /> 
       </ItemTemplate> 
       <FooterTemplate> 
        <asp:TextBox ID="txtFooterAlias" runat="server" /> 
        <asp:LinkButton ID="btnFooterAdd" runat="server" OnClick="AddFromFooter">Add New</asp:LinkButton> 
       </FooterTemplate> 
      </asp:TemplateField> 
      <asp:CommandField ShowDeleteButton="True" /> 
相關問題