我的webform应用在updatepanel中有一个datalist,datalist包含:{imagebutton,label,label}。 datalist连接到银行。在图像按钮拇指的图像将显示。我想当用户点击datalist中的每个图像按钮时,将显示原始图像。 所有数据都成功显示在datalist中,但问题是在点击图像按钮后。我不能继续如何检测哪个图像按钮被点击?它的数据源是什么?同一细胞中的实验室的文本或数据源是什么?
请帮助我,我的代码就像打击一样:
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div class="content">
<div class="datashow">
<asp:DataList ID="DataList1" runat="server" BorderColor="#666666" BorderStyle="None" BorderWidth="2px" CellPadding="2" CellSpacing="2" Font-Size="Small" RepeatDirection="Horizontal" CssClass="dl" HorizontalAlign="Center" RepeatColumns="5">
<HeaderStyle BackColor="#333333" Font-Bold="True" Font-Size="Large" ForeColor="White" HorizontalAlign="Center" Wrap="True" />
<ItemTemplate>
<asp:ImageButton ID="imgbtn" runat="server" ImageUrl='<%# Bind("imgtp","~/images/{0}") %>' Width="100px" OnClick="imgbtn_Click" />
<br />
<b>Employee Name:</b>
<asp:Label ID="lblCName" runat="server" Text='<%# Bind("name") %>'></asp:Label>
<br />
<b>Designation:</b>
<asp:Label ID="lblName" runat="server" Text='<%# Bind("company") %>'></asp:Label>
</ItemTemplate>
</asp:DataList>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
和
protected void imgbtn_Click(object sender, ImageClickEventArgs e)
{
//how to detect which imagebtn clicked and what is its datasource?
}
答案 0 :(得分:4)
sender
是按钮,NamingContainer
是DataListItem
:
protected void imgbtn_Click(object sender, ImageClickEventArgs e)
{
var imgbtn = (ImageButton) sender;
var item = (DataListItem) imgbtn.NamingContainer;
// the datasource is not available on postback, but you have all other controls
var lblCName = (Label) item.FindControl("lblCName");
string company = lblCName.Text;
}
您还可以使用ImageButton
的{{3}}来存储ID,或使用隐藏控件(Visible=false
或HiddenField
)来存储它。