3

我有许多页面在相同的布局中显示相同的结果(如搜索结果、顶部查看、最近添加等)如果我想更改任何字段,我必须在所有页面中执行此操作。是否可以在列表视图中有一个模板或用户控件,我可以在一个地方更改它以及如何传递 id 参数?

附加信息:现在我有这样的事情:

<asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource" DataKeyNames="id">
    <ItemTemplate>
                 Id:
         <asp:Label ID="IDLabel" runat="server" 
         Text='<%# Eval("id") %>' />
         Description:
         <asp:Label ID="DescriptionLabel" runat="server" 
              Text='<%# Eval("Description") %>' />
   </ItemTemplate>
</asp:ListView>

我想拥有的是:

<asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource" DataKeyNames="id">
    <ItemTemplate>
         <usrCtrl:info ID="info1" runat="server" /> 
   </ItemTemplate>
</asp:ListView>

和一个带有模板的文件:

Id:
<asp:Label ID="IDLabel" runat="server" 
Text='<%# Eval("id") %>' />
Description:
<asp:Label ID="DescriptionLabel" runat="server" 
    Text='<%# Eval("Description") %>' />

谢谢,吉姆·奥克

4

2 回答 2

2

尝试这个:

列表显示:

<asp:ListView ID="ListView2" runat="server" 
    onitemdatabound="ListView2_ItemDataBound">
  <ItemTemplate>
     <usrCtrl:info Description_Lbl='<%# Bind("id") %>' 
                 ID_Lbl='<%# Bind("Description") %>' ID="info1"  runat="server" />
 </ItemTemplate>
</asp:ListView>

用户控制代码:

信息.ascx:

<%@ Control Language="C#" AutoEventWireup="true" 
                    CodeBehind="info.ascx.cs" Inherits="info" %>
<asp:Label ID="IDLabel" runat="server"  />
Description:
<asp:Label ID="DescriptionLabel" runat="server"  />

信息.ascx.cs:

public partial class info: System.Web.UI.UserControl
{
    public string ID_Lbl {get;set;}
    public string Description_Lbl { get; set; }
    protected void Page_Load(object sender, EventArgs e)
    {
        IDLabel.Text = ID_Lbl;
        DescriptionLabel.Text = Description_Lbl;
    }
}
于 2013-03-12T13:46:18.773 回答
1

您可以使用整个 ListView 创建一个用户控件(*.ascx 文件),然后公开 DataSource 以绑定页面中的数据。

我发现这篇文章很有帮助:

如何在用户控件的.aspx 文件中设置DataSource 属性?

于 2013-03-12T13:29:33.723 回答