我是ASP.NET新手,并不真正了解如何显示包含数据库数据的表。数据加载到一个对象中,我有一个对象列表。
现在我要显示一个包含一些列的表,一个图像(从对象中的两个字段创建的路径),一个链接(传递对象的一个字段),一个textarea(来自对象的id,来自object的值), radiobutton(来自对象的id)。
我该怎么办?我已经尝试将数据网格绑定到对象列表,并且它可以工作。但我不想显示所有数据成员,我不知道如何创建正确的标题以及图像和表单控件。
ImageDataGridView.DataSource = tradeObj.Images;
ImageDataGridView.DataBind();
答案 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" />