从另一个aspx页面访问aspx页面中的控件属性

时间:2015-10-23 21:54:35

标签: c# asp.net

我有2个aspx页面,aspx页面,说page1.aspx包含列表视图,代码如下

<asp:ListView ID="ListView1" runat="server"
              GroupItemCount="3" DataSourceID="SqlDataSource1">

    <LayoutTemplate>
        <table style="table-layout:fixed;width:100%">
            <tr id="groupPlaceholder" runat="server"></tr>
        </table>
    </LayoutTemplate>

    <GroupTemplate>
        <tr>
            <td id="itemPlaceholder" runat="server"></td>
        </tr>
    </GroupTemplate>

    <ItemTemplate>
        <td align="center">
            <asp:Image ID="productImage" ImageUrl='<%# Eval("ImageUrl") %>' runat="server"/>
            <br />
            <asp:LinkButton ID="ProductTitleLinkButton"
                 runat="server" Text='<%# Eval("ProductTitle") %>'
                 OnClick="ProductTitleLinkButton_Click"
                 PostBackUrl="~/ItemDetails.aspx">
            </asp:LinkButton>
            <br />Rs. 
            <asp:Label ID="PriceLabel" runat="server" Text='<%# Eval("Price") %>'></asp:Label>
            <br />        
        </td>
    </ItemTemplate>

    <GroupSeparatorTemplate>
        <tr runat="server">
            <td colspan="3"><hr /></td>
        </tr>
    </GroupSeparatorTemplate>
</asp:ListView> 

在这里,我尝试访问DataSourceId listview控件的ListView1属性,ImageUrl图片控件的productImage属性和{{1} Text属性从另一个aspx页面链接按钮控件。

第二个aspx页面的代码,比如page2.aspx如下

ProductTitleLinkButton

我正在使用protected void Page_Load(object sender, EventArgs e) { //Checking if itemsView page exists if (Page.PreviousPage != null) { //Getting the list view in previous page ListView listView_PreviousPage = (ListView)PreviousPage.FindControl("ListView1"); //Getting the data source of list view in the previous page string dataSource = listView_PreviousPage.DataSourceID; //Getting the SQL data source used by the list view in the previous page SqlDataSource sqlDataSource_PreviousPage = (SqlDataSource)PreviousPage.FindControl(dataSource); //Getting the SelectCommand property (to get the query) of the SQL Data source string selectCommand = sqlDataSource_PreviousPage.SelectCommand; //Getting the image of the product selected in itemsView page Image productImage_PreviousPage = (Image)PreviousPage.FindControl("productImage"); //Getting the image url of the image string imageUrl_PreviousPage = productImage_PreviousPage.ImageUrl; } } 来查找上一页的控件。但我得到FindControl()请帮助我。我想要上一页中控件属性的值。

2 个答案:

答案 0 :(得分:0)

我假设你是从一个页面到另一个页面点击。我建议处理下一个按钮单击并将控制值复制到session()或在下一页的请求中传递它们。

答案 1 :(得分:0)

您的页面是否在容器(母版页)中?

如果是,则FindControl方法在当前命名容器中查找控件。如果您要查找的控件位于另一个控件内(通常位于模板内),则必须首先获取对容器的引用,然后搜索容器以找到您想要获得的控件。

因此,如果page1.aspx包含在母版页中,那么请在page2.aspx中获取对母版页的引用,如下所示:

var previousPageMaster = PreviousPage.Master;

然后获取对包含listview的contentplaceholder的引用:

var maincontentplaceholder = previousPageMaster.FindControl("maincontent");

然后你应该能够在ItemDetails页面中获得对ListView的引用:

var listView_PreviousPage = (ListView)maincontentplaceholder.FindControl("ListView1");

查看链接以获取更多信息, https://msdn.microsoft.com/en-us/library/ms178139.aspx