【问题标题】:How do I bind a gridview to a Generic list of strings?如何将 gridview 绑定到通用字符串列表?
【发布时间】:2013-04-23 20:06:08
【问题描述】:

这应该很简单,但我输了这场战斗。我有一个网格视图。我想要的只是让用户能够在其中输入名称,单击添加并添加值。如果他们犯了错误,我也想使用删除命令。我试过评估和绑定。但是有些事情总是出错。

我有一个文本框来输入第一个。并且在页脚中还有一个文本框来输入值。当它们被输入时,它们被添加到一个通用列表(字符串)并重新绑定到 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>

以及背后的代码...

公共子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()

结束子

【问题讨论】:

  • 你能详细说明“事情总是出错”吗?

标签: gridview


【解决方案1】:

根据您的描述,别名的类型不清楚。是匿名类型吗?

然而,将网格与字符串列表绑定的非常简单的方法是将它们转换为任何时间。

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"   />

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    相关资源
    最近更新 更多