我有一个经典的父子关系,我希望使用asp:GridView
控件来CRUD。对于CRUD,父母很容易,但挑战是将asp:GridView
嵌套在能够处理子关系的asp:GridView
中。
为了使问题更容易,我构建了一个例子。请考虑以下EF代码:
public class Context : DbContext
{
public DbSet<Animal> Animals { get; set; }
public DbSet<Tag> Tags { get; set; }
}
public class Animal
{
public int AnimalID { get; set; }
public string Name { get; set; }
public virtual IEnumerable<Tag> Tags { get; set; }
}
public class Tag
{
public int TagID { get; set; }
public string Name { get; set; }
}
我正在使用asp:Gridview
查看/修改Animal
目标:
<asp:GridView runat="server" DataSourceID="animalDataSource" DataKeyNames="AnimalID" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Description" HeaderText="Description" />
<asp:CommandField ShowCancelButton="true" ShowEditButton="true" ShowDeleteButton="true" />
</Columns>
</asp:GridView>
DataSource
与代码绑定:
protected void DataSource_ContextCreating(object sender, EntityDataSourceContextCreatingEventArgs e)
{
var context = new Context();
e.Context = ((IObjectContextAdapter)context).ObjectContext; }
}
我想将嵌套的asp:Gridview
作为添加/删除/编辑Tag
对象的列之一包含在Animal
中。 我怎么能实现这个目标?
答案 0 :(得分:0)
BoundField将指定的DataSource字段的值显示为文本。通过使用绑定字段,我们可以使用标题文本和数据字段直接绑定数据,而无需使用任何控件。 。 TemplateField允许混合使用HTML标记,Web控件和数据绑定语法。我们可以在模板字段中定义自己的asp.net控件。所以基本上你将一个绑定字段转换为一个模板列模板列还带有一个编辑模板标签,它为你提供了超过标准编辑所需的gridview行...例如,当处于编辑模式时,在此行中放置一个下拉列表让我选择 - 可能性是无穷无尽的
更改为模板字段转到编辑
模板将网格控件添加到字段
添加编辑/删除链接按钮
我认为这会有所帮助
Dim grd1 As GridViewRow
Dim gv As GridView
Dim l1, l2 As Label
Dim strsql As String
For Each grd1 In GridView1.Rows
'find controls of parent gridrow
l1 = grd1.FindControl("l00")
l2 = grd1.FindControl("l1")
gv = grd1.FindControl("gv1")
strsql = "select file_name from product_file where pname='" & l1.Text & "' and categry='" & l2.Text & "'"
Dim dt1 As New DataTable()
Dim da1 As New SqlDataAdapter(strsql, con)
da1.Fill(dt1)
gv.DataSource = dt1
gv.DataBind()
Next
在填充父网格时执行类似的操作