Как изменить изображение ячейки gridview во время выполнения? - PullRequest
0 голосов
/ 06 августа 2011

У меня есть вид сетки, который содержит имя столбца «История», на котором есть кнопка «Плюс» (+).Нажатие на кнопку плюсового изображения приводит к добавлению новой строки ниже.Вставка новой строки должна изменить изображение кнопки «Плюс изображение» на кнопку «Минус (-)» только для этой конкретной родительской строки.Остальные строки должны иметь кнопку плюса.

Q1.Как узнать индекс строки выбранной строки, чтобы можно было изменить изображение?

Во-вторых, если я нажму кнопку «Минус изображение», это должно привести к сбросу на кнопку «Плюс изображение», а добавленная дочерняя строка не должнабыть увиденным.

Q2.Как изменить изображение обратно на кнопку «Плюс изображение»?

Я добавил кнопку «Плюс изображение» в поле шаблона сетки.Следовательно, когда сетка загружается, плюс изображение видно.

Пожалуйста, совет!

Спасибо!

1 Ответ

0 голосов
/ 06 августа 2011

Прежде всего добавьте столбец шаблона с кнопкой изображения в нем:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Srl"
    DataSourceID="EntityDataSource1" OnRowCommand="GridView1_RowCommand" OnRowDataBound="GridView1_RowDataBound">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/Images/Left.gif" CommandName="Add" />
            </ItemTemplate>
        </asp:TemplateField>
        <%--Other columns--%>
    </Columns>
</asp:GridView>

Затем в обработчике события GridView1_RowDataBound установите для кнопки CommandArgument индекс строки:

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            ImageButton button = (ImageButton)e.Row.FindControl("ImageButton1");
            button.CommandArgument = e.Row.RowIndex.ToString();
        }
    }

Наконецв обработчике событий GridView1_RowCommand переключайте ImageButton imageUrl и CommandName и делайте все, что хотите, для добавления и удаления строк:

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        int index = Convert.ToInt32(e.CommandArgument);
        GridViewRow selectedRow = GridView1.Rows[index];
        ImageButton button = (ImageButton)e.CommandSource;
        switch (e.CommandName)
        {
            case "Add":
                // Use selectedRow to add your rows       
                button.ImageUrl = "~/images/down.gif";
                button.CommandName = "Remove";
                break;
            case "Remove":
                // Use selectedRow to remove your rows
                button.ImageUrl = "~/images/left.gif";
                button.CommandName = "Add";
                break;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...