2011-04-13 3 views
2

これはシンプルなはずですが、私はこの戦いを忘れています。私はグリッドビューを持っています。私が望むのは、ユーザが名前を入力して追加をクリックして値を追加できるようにすることだけです。また、間違えた場合は、deleteコマンドを使いたいと思っています。私はEvalとBindを試しました。しかし、何かが間違っています。グリフビューを文字列の汎用リストにバインドするにはどうすればよいですか?

私は最初のものを入力するためのテキストボックスを持っています。また、フッターのテキストボックスに値を入力することもできます。入力すると、汎用リスト(文字列)に追加され、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> 

と背後にあるコードの名前です...

ます。Public 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() 

エンドサブ

+0

をこの「エイリアス」フィールドをバインドすることができますが、「何かが間違っていっている」について詳しく説明することはできますか? – Marcie

答えて

0

あなたの説明から、Aliaのタイプはっきりしない。それは匿名のタイプですか?

グリッドを文字列リストにバインドする非常に簡単な方法は、いつでもそれらを変換することです。

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" /> 
関連する問題