DataGrid和格式化数据

本文关键字:格式化数据 DataGrid | 更新日期: 2023-09-27 18:27:31

我是ASP.NET的新手,不太了解如何显示包含数据库数据的表。数据加载在一个对象中,在那里我有一个对象列表。

现在,我想显示一个表,其中包含一些列、一个图像(从对象中的两个字段创建的路径)、一个链接(传递对象的一个字段)、文本区域(来自对象的id、来自对象的值)和一个单选按钮(来自对象)。

我该怎么做。我尝试过将数据网格绑定到对象列表,并且它很有效。但我不想显示所有的数据成员,也不知道如何创建正确的标题、图像和表单控件。

    ImageDataGridView.DataSource = tradeObj.Images;
    ImageDataGridView.DataBind();

DataGrid和格式化数据

要停止为数据源中的每一列自动创建列,请设置:

ImageDataGridView.AutoGenerateColumns = false

然后,您需要为要显示的数据源中的每一列定义一列,这取决于您可能想要绑定列(您可以控制格式)或更多相关内容的列。

请参阅http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datagrid.columns.aspx对于一个样本和可用的不同列类型,

您可以使用边界字段指定列和标题

<asp:boundfield datafield="yourColumn"
            headertext="theHeaderText"/>

你需要关闭:

ImageDataGridView.AutoGenerateColumns = false

要格式化值,请查看msdn上的此链接。

您需要使用模板字段根据以下自定义数据网格

<asp:GridView ID="GridView1" runat="server">
  <Columns>
    <asp:TemplateField ShowHeader="True">
      <ItemTemplate>
        <asp:Image runat="server" ID="Image1" 
            ImageUrl="Enabled.gif" />
      </ItemTemplate>
    </asp:TemplateField>
......
......
  </Columns>
</asp:GridView>

请参阅此msdn链接以使用数据网格中的模板字段

更新

为了遍历gridview的每一行,您需要按照以下步骤处理Rowdatabound事件。

protected void gridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
        Image imgCtrl = (Image) e.Row.FindControl("imgCtrl");
        imgCtrl.ImageUrl = "you can apply any format of url here";
    }
} 

有关Rowdatabound事件的更多信息,请访问此链接

只需在datagrid/gridview控件上设置autogenerate to false。然后,您可以创建一个templateField列&将标签或文本框控件放入itemTemplate&像一样绑定它们

<asp:Label ID="lblMyColumn" Text="<%# Bind("YourColumnName") %>' runat="server"></asp:Label>

或者,您也可以将boundField&设置其属性

<asp:BoundField DataField="YourColumnName" HeaderText="Your Text" SortExpression="YourColumnName" />