我有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()
请帮助我。我想要上一页中控件属性的值。
答案 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