需要在链接点击时更改datalist中的图像

时间:2014-03-21 17:55:37

标签: c# asp.net webforms

我有一个数据列表,其图像旁边有一个超链接。单击时我需要超链接来更改图像。我点击时已经有了要更改的图像,但我不确定如何在超链接点击时更改图像。我不知道从哪里开始。

    <asp:DataList ID="DataList1" runat="server" CellPadding="0" DataSourceID="SqlDataSource1" ForeColor="#333333" Height="350px">
        <AlternatingItemStyle BackColor="White" ForeColor="#284775" />
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <ItemStyle BackColor="#F7F6F3" ForeColor="#333333" />
        <ItemTemplate>
            <asp:ImageButton style="padding:0;margin:0;" ID="btnAdd" runat="server" ImageUrl="~/Images/add.png" OnCommand="ImgList_Command" />
            <asp:LinkButton ID="LinkButton1" runat="server" OnClick="FoodLink_Click"><asp:Label ID="Long_DescLabel" runat="server" Text='<%# Eval("Long_Desc") %>' style="line-height:32px;vertical-align: top;height:32px;" Font-Size="Small" /></asp:LinkButton>
</ItemTemplate>
<SelectedItemStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
    </asp:DataList>

在后端我只有:

protected void FoodLink_Click(object sender, EventArgs e)
{
    test.Visible = true;
    tof.Visible = true;
}

protected void ImgList_Command(object sender, CommandEventArgs e)
{
    ((ImageButton)sender).ImageUrl = "~/Images/removefood.png";
}

我不知道从哪里开始。我假设我需要使用另一个命令,但是如何获得正确的图像ID?

2 个答案:

答案 0 :(得分:0)

据我所知,你需要在图像和链接按钮之间建立一个共同的元素(我假设你试图在链接按钮点击上获得相同的效果,如图像按钮点击)。

首先想到的最简单的事情是为两个相关按钮采用命名约定。例如,imageBtnX适用于linkBtnX,imageBtnY适用于linkBtnY。

答案 1 :(得分:0)

这是我如何做到的;我从linkbutton获得了clientid数字,并使用它在图像按钮上设置了属性。

当然代码需要清理并检查以确保它是一个整数,因此它不会抛出错误,但它可以工作。

protected void FoodLink_Click(object sender, EventArgs e)
{
    test.Visible = true;
    tof.Visible = true;
    string indexnu = ((LinkButton)sender).ClientID.ToString();
    int gnum = Convert.ToInt16(indexnu.Substring(indexnu.LastIndexOf("_") + 1, indexnu.Length - indexnu.LastIndexOf("_") - 1));

    ImageButton imgBtn = (ImageButton)DataList1.Items[gnum].FindControl("btnAdd");
    imgBtn.ImageUrl = "~/images/removefood.png";

}