DataGrid和格式化数据

时间:2012-03-13 10:04:52

标签: c# asp.net

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

现在我要显示一个包含一些列的表,一个图像(从对象中的两个字段创建的路径),一个链接(传递对象的一个​​字段),一个textarea(来自对象的id,来自object的值), radiobutton(来自对象的id)。

我该怎么办?我已经尝试将数据网格绑定到对象列表,并且它可以工作。但我不想显示所有数据成员,我不知道如何创建正确的标题以及图像和表单控件。

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

4 个答案:

答案 0 :(得分:1)

您可以使用boundfield

指定列和标题
<asp:boundfield datafield="yourColumn"
            headertext="theHeaderText"/>

你需要关闭:

ImageDataGridView.AutoGenerateColumns = false

要格式化值,请在msdn。

处查看此link

答案 1 :(得分:1)

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

ImageDataGridView.AutoGenerateColumns = false

然后,您需要为要显示的数据源中的每个列定义一个列 - 具体取决于您可能需要绑定列的列(您可以控制格式)或更复杂的内容。

有关示例和可用的不同列类型,请参阅http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datagrid.columns.aspx

答案 2 :(得分:1)

您需要使用模板字段来自定义您的数据网格,如下所示

<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 link以使用datagrid中的模板字段

<强>更新

要遍历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事件访问this link

的更多信息

答案 3 :(得分:0)

只需在datagrid / gridview控件上设置autogenerate to false即可。然后,您可以创建templateField列&amp;删除itemTemplate&amp;中的标签或文本框控件像

一样绑定它们
<asp:Label ID="lblMyColumn" Text="<%# Bind("YourColumnName") %>' runat="server"></asp:Label>

或者您也可以删除boundField&amp;设置其属性

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