如何检测单击哪个datalist项元素?

时间:2014-07-31 12:07:40

标签: c# asp.net sql-server datalist

我的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?
}

1 个答案:

答案 0 :(得分:4)

sender是按钮,NamingContainerDataListItem

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=falseHiddenField)来存储它。