видимость изображений кнопок в зависимости от пунктов списка - PullRequest
0 голосов
/ 05 февраля 2012

У меня есть элемент управления checkboxlist с 9 кнопками изображений. Мне нужно, чтобы, если пользователь установил флажок, отобразились соответствующие изображения кнопок ... Общее количество проверок == 3 ..

например (для всех изображений кнопка tat содержит проверяемые привилегии, видимость будет установлена ​​в значение true)

ВСЕ ЭТО ДОЛЖНО БЫТЬ СДЕЛАНО БЕЗ КАКИХ-ЛИБО КНОПКИ

<asp:CheckBoxList ID="CheckBoxList1" runat="server" 
    OnSelectedIndexChanged="CheckBoxList1_SelectedIndexChanged1" 
    AutoPostBack="True">
    <asp:ListItem Value="Privilege 1">Dining</asp:ListItem>
    <asp:ListItem Value="Privilege 2">Travel</asp:ListItem>
    <asp:ListItem Value="Privilege 3">Shopping</asp:ListItem>
</asp:CheckBoxList>
<table cellspacing="10">
    <tr>
        <td>
            <asp:ImageButton ID="ImageButton1" runat="server" Height="80px" 
                Width="120px" ImageUrl="imageurl" ToolTip="image" />
        </td>
        <td>
            <asp:ImageButton ID="ImageButton2" runat="server" Height="80px" 
                Width="120px" ImageUrl="imageurl" ToolTip="image" />
        </td>
        <td>
            <asp:ImageButton ID="ImageButton3" runat="server" Height="80px" 
                Width="120px" ImageUrl="imageurlg" ToolTip="image" />
        </td>
    </tr>
</table>

Код за C #

protected void CheckBoxList1_SelectedIndexChanged1(object sender, EventArgs e)
{

    foreach (ListItem listItem in CheckBoxList1.Items)
    {
        if (listItem.Selected == true)
        {
            //Just to check which item is being checked
            //However, it only returns one item at a time
            Label1.Text = ", " + listItem.Text;
        }
    }

    //list of privileges
    string[] privilege = { "Privilege 1", "Privilege 2", "Privilege 3", "Privilege 4", "Privilege 5", "Privilege 6", "Privilege 7" };

    ImageButton[] Privilege1 = { ImageButton1, ImageButton5, ImageButton6, ImageButton7, ImageButton8 };
         ........

     if (CheckBoxList1.SelectedValue == privilege[i])
        {
           //set the visibility of respective button images with this privileges to be true 
        }
}

Как это сделать ?? Пожалуйста, помогите ....

1 Ответ

0 голосов
/ 05 февраля 2012

Один из способов это: 1) По умолчанию установите для всех кнопок «Изображение» значение «ложно» (т. Е. Все они начинают отображаться невидимыми, поскольку флажок не установлен).

<asp:ImageButton ID="ImageButton1" runat="server" Height="80px" Width="120px"    ImageUrl="imageurl" ToolTip="image" Visible="False"/>

2) В коде кода обязательно указывайте System.Linq. Ниже приведено описание того, как сделать кнопки изображения видимыми в зависимости от того, какие элементы выбраны (разумеется, поместите константы в более центральное место):

 public void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs args)
        {
            const string PRIVILAGE1 = "Privilege 1";
            const string PRIVILAGE2 = "Privilege 2";
            const string PRIVILAGE3 = "Privilege 3";

            var checkBoxList = sender as CheckBoxList;
            if (checkBoxList == null) return;
            var selectedItems = checkBoxList.Items.Cast<ListItem>().Where(x => x.Selected).ToList();

            if (!selectedItems.Any()) return;
            ImageButton1.Visible = selectedItems.Any(x => x.Value.Equals(PRIVILAGE1, StringComparison.OrdinalIgnoreCase));
            ImageButton2.Visible = selectedItems.Any(x => x.Value.Equals(PRIVILAGE2, StringComparison.OrdinalIgnoreCase));
            ImageButton3.Visible = selectedItems.Any(x => x.Value.Equals(PRIVILAGE3, StringComparison.OrdinalIgnoreCase));
    }
...