asp.net - FindControl 在 Listview Null 异常中不起作用
问题描述
protected void PassSessionVariable_Click(object sender, EventArgs e)
{
String strLocationID = livTour.FindControl("lblLocationID").ToString();
}
出于某种原因,FindControl
得到了一个空异常。有什么特别的原因吗?
这是我的 Listview 的代码。查找控件未找到 LocationID 标签。
<%--Create datasource for ListView for Tour Locations.--%>
<asp:SqlDataSource runat="server" ID="sdsListViewTour"
ConnectionString="<%$ConnectionStrings:2020LJCDT %>"
OldValuesParameterFormatString="original_{0}"
SelectCommand="SELECT LocationID, Location, Image
FROM Location
Order BY City;">
</asp:SqlDataSource>
<%--Listview--%>
<asp:ListView runat="server" ID="livTour"
DataKeyNames="Location"
DataSourceID="sdsListViewTour">
<ItemTemplate>
<div class="container p-1 bg-light">
<asp:LinkButton runat="server" ID="PassSessionVariable" OnClick="PassSessionVariable_Click">
<div class="row border-top border-bottom border-secondary" style="padding-top: 5px; padding-bottom: 5px; padding-left: 20px;">
<asp:Label runat="server" ID="lblLocationID" Text='<%# Eval("LocationID") %>' />
<div class="col text-center" style="margin: auto; color: #2699FB;">
<asp:Label runat="server" CssClass="font-weight-bold" Text='<%# Eval("Location") %>' />
</div>
<div class="col text-center">
<asp:Image runat="server" CssClass="rounded" ImageUrl='<%# "~/Image/Location/" + Eval("Image") %>' />
</div>
</div>
</asp:LinkButton>
</div>
</ItemTemplate>
</asp:ListView>
解决方案
您可以通过发件人找到位置标签BindingContainer
,如下所示:
protected void PassSessionVariable_Click(object sender, EventArgs e)
{
var locationLabel = (((Control)sender).BindingContainer.FindControl("lblLocationID") as Label);
String strLocationID = locationLabel.Text;
}
在这种情况下,BindingContainer 表示您单击的 ListItem 行。这样您就可以在此行中找到位置标签。
推荐阅读
- python - 如何通过pymongo编写从mongodb到pandas df的正确查询格式
- string - 字符串修改的问题链接操作
- java - E/SQLiteDatabase:使用 SQLiteConstraintException 插入时出错
- python - Python替换包含十六进制数字的子字符串
- php - PHP PDO关闭连接设置为null但返回语句
- spinnaker - Spinnaker K8 设置中 Docker 注册表的目的是什么
- aframe - 如何解决在移动框架中调整视频大小的问题?
- c# - 将动作作为参数传递不允许订阅它
- webbrowser-control - RDP 应用程序中的 Microsoft 网络浏览器 FEATURE_BROWSER_EMULATION
- vuejs2 - vue-router 不会在路由更改时渲染新组件