我有一个有两列的表:
CommunityID
PersonID
和一个“人员”表,其中包含(除其他外):
FirstName
LastName
我想为每个社区显示不同的数据网格,每个数据网格仅包含属于该社区的人员。我想在不使用 4 个单独的 SqlDataSources 的情况下执行此操作。
中继器看起来是一个好方法,在 ItemTemplate 内有一个 DataGrid,但我似乎无法弄清楚如何让它与每次重复的不同值一起工作。
如果有人对更好的方法有任何建议,我将非常感激,因为这是我第一次涉足 ASP.NET 世界
Thanks,
Mike
就我个人而言,我不会使用 DataGrid 控件,因为它限制了您对输出的控制,并且它们已被更新的控件所取代GridView http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.aspx & ListView http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.aspx控件(尽管 DataGrid 是没有过时 http://msdn.microsoft.com/en-us/library/ee461502(VS.100).aspx因此,如果您愿意,请随意使用它)。您可能需要考虑使用替代方案,但您不需要这样做。
要执行您正在寻找的操作,您将具有如下所示的标记:
<asp:Repeater runat="server" ID="myRepeater"
onitemdatabound="Repeater_ItemDataBound">
<ItemTemplate>
<asp:DataGrid runat="server" ID="myDataGrid">
</asp:DataGrid>
</ItemTemplate>
</asp:Repeater>
然后,您将使用以下隐藏代码连接标记:
protected void Page_Load(object sender, EventArgs e)
{
myRepeater.DataSource = new Object[0];
myRepeater.DataBind();
}
protected void Repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
DataGrid dg = (DataGrid)e.Item.FindControl("myDataGrid");
object o = e.Item.DataItem;// Cast the DataItem as whatever
// your Repeater's DataSource is
// ...
// Do whatever you need to get the
// data source for your DataGrid here
// ...
dg.DataSource = DataGridSourceObjectHere;
dg.DataBind();
}
关键是中继器ItemDataBound http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.itemdatabound.aspxevent,这是每次创建重复器行时调用的方法。您可以在此处对 DataGrid 源进行数据绑定。您可以使用以下方法将您需要的任何逻辑放入此方法中RepeaterItemEventArgs http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeateritemeventargs.aspx参数来访问您绑定到中继器的数据项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)