【问题标题】:Populate a gridview on runtime在运行时填充网格视图
【发布时间】:2011-11-13 09:09:24
【问题描述】:

我有一个网格视图,我想在一些通用列表中填充数据。 我使用“DataTable”作为 DataSource,其中包含我需要的列 (DataColumn)。

GridView1.DataSource = CreateDataTable();

我的问题是我的 gridview 包含 html 标签,所以我需要类似

myBoundedField.HtmlEncode = false;

我需要更改列的标题,如果我使用“DataColumn”,这一切都是不可能的。我发现了一些关于 BoundField 的代码。 为什么/何时应该使用 BoundField 代替?有什么好处?

【问题讨论】:

    标签: asp.net gridview


    【解决方案1】:

    为您创建GridView Column 对象并将它们添加到Gridview's Columns collection。并且您可以为自定义值的列创建自己的 ItemTemplates,就像您想在此处操作 HTML 一样。

        GridView gvDynamicArticle = new GridView();
    
        gvDynamicArticle.Width = Unit.Pixel(700);
    
        gvDynamicArticle.BorderWidth = Unit.Pixel(0);
        gvDynamicArticle.Caption = "Report View";
        gvDynamicArticle.AutoGenerateColumns = false;
    
        gvDynamicArticle.ShowFooter = true;
    
        TemplateField tf = null;
    
        tf = new TemplateField();
    
        tf.HeaderTemplate = new DynamicGridViewTextTemplate("ArticleID", DataControlRowType.Header);
    
        tf.ItemTemplate = new DynamicGridViewTextTemplate("ArticleID", DataControlRowType.DataRow);
    
        tf.FooterTemplate = new DynamicGridViewTextTemplate(DataControlRowType.Footer, ds.Tables[i].Rows.Count);              
    
      gvDynamicArticle.Columns.Add(tf);
    

    点击以下链接了解更多信息:

    http://www.codedigest.com/Articles/ASPNET/168_Create_Dynamic_GridView_Control_in_C_ASPNet.aspx

    http://www.codeproject.com/KB/aspnet/dynamic_Columns_in_Grid.aspx

    http://www.dotnetfunda.com/articles/article1400-how-to-generate-gridview-columns-dynamically-based-on-user-selection.aspx

    添加一些有界列,您可以在rowcreated 事件中访问数据,然后使用server.htmlDeocde( <html encoded field value>) 在网格中显示.. 使用此事件,您可以使用HtmlEncode( <save html field value> ) 在行命令上保存html 代码。

    希望对你有所帮助..

    【讨论】:

      【解决方案2】:

      您可以使用 new Column() 为网格动态创建列并为其分配值。

      如果你想让我用一段代码来支持它,请告诉我。

      【讨论】:

      • 感谢 Ankit 的回复。有没有一种叫做 Column 的类型?问题是我有要在单元格中显示的 html 内容。我通过使用 DataColumn 类型定义每一列来在内存上创建我的数据源
      【解决方案3】:

      在 HTML 中,按如下方式定义 GridView:

      <asp:GriVview ... AutoGenerateColumns="false" runat="server">
        <Columns>
          <asp:BoundField DataField="CustomerID" HeaderText="Customer ID" />
          <asp:BoundField DataField="CompanyName" HtmlEncode="false" HeaderText="Customer Name" />
          ...
        </Columns>
      </asp:GridView>
      

      (改编自this example

      您应该很清楚如何为每列指定列标题 (HeaderText) 以及 HTML 编码 (HtmlEncode)。 DataField 指定数据表中列的名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-08
        • 2015-01-17
        • 1970-01-01
        • 1970-01-01
        • 2017-09-20
        • 1970-01-01
        • 2018-11-04
        相关资源
        最近更新 更多