2012-03-13 71 views
0

我新的ASP.NET和并不真正了解如何与数据库中的数据显示表。数据被加载到一个对象中,我有一个对象列表。DataGrid和格式化数据

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

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

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

是什么tradeObj.Images; – 2012-03-13 10:07:38

回答

1

可以使用boundfield

​​

spefify你列页眉和您需要关闭:

ImageDataGridView.AutoGenerateColumns = false 

为了格式的值看看这个link在MSDN。

1

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

ImageDataGridView.AutoGenerateColumns = false 

然后,你需要定义一个列在你要显示的数据源中的每一列 - 这取决于在列上你可能想要一个绑定列(你可以控制格式)或更多的参与。

进行了抽查,可用

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中

与模板领域的工作见 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datagrid.columns.aspx

更新

要遍历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

+0

谢谢,这适用于我的标签和文本框。但是图像有一个基于ID的url和一个名为fileExtension的字段。有没有一种方法来格式化多个字段的网址? – Lars 2012-03-13 17:41:36

+0

@Lars请看我更新的答案。 – 2012-03-14 04:54:35

0

的更多信息,你的DataGrid/GridView控件只需设置autogenerate to false。然后,您可以创建一个模板列列&拖放标签或文本框控件内的ItemTemplate &绑定他们像

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

另外,您也可以放下一个BoundField &设置其属性

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