asp.net gridview: Как я могу иметь несколько полей кнопок в одном столбце? - PullRequest
8 голосов
/ 25 февраля 2011

Мне нужно создать несколько действий для вида сетки - скажем, «Одобрить», «Запретить» и «Возврат».

Я могу сделать это, создав поле кнопки для каждого действия:

<asp:ButtonField ButtonType="Link" CommandName="Approve" Text="Approve" /> 
<asp:ButtonField ButtonType="Link" CommandName="Deny" Text="Deny /> 
<asp:ButtonField ButtonType="Link" CommandName="Return" Text="Deny" /> 

Однако при этом создается один столбец для каждой кнопки.

Есть ли способ иметь те же функции, но объединить их в один столбец?

Ответы [ 3 ]

9 голосов
/ 25 февраля 2011

Рассматривали ли вы использовать TemplateField?Вот пример:

<asp:GridView ID="grdTest" runat="server">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:LinkButton ID="btnApprove" runat="server" CommandName="Approve" Text="Approve" />
                <asp:LinkButton ID="btnDeny" runat="server" CommandName="Deny" Text="Deny" />
                <asp:LinkButton ID="btnReturn" runat="server" CommandName="Return" Text="Return" />
            </ItemTemplate>                
        </asp:TemplateField>
    </Columns>
</asp:GridView>

Затем вы можете захватить команды точно таким же образом, используя OnRowCommand или делать все что угодно.Вы имеете полный контроль над тем, чтобы он вел себя так, как вам нужно, и не был привязан к встроенным функциям использования обычных предопределенных типов столбцов.

3 голосов
/ 25 февраля 2011

Решение не использовать элементы ButtonField.

Чтобы выполнить то, что вам нужно, вам нужно создать столбец как TemplateField и определить кнопки как обычный ASP.NET <asp:Button id="myButton" /> в TemplateField или EditItemTemplate в соответствии с вашим пользовательским интерфейсом.

Вы можете обрабатывать события Click в обработчике GridView_OnItemCommand(), где вы можете проверить e.CommandName, чтобы точно определить, какая кнопка вызвала событие.

3 голосов
/ 25 февраля 2011

Попробуйте вместо этого поместить кнопки в <asp:TemplateField>:

<asp:TemplateField>
    <ItemTemplate>
        <asp:LinkButton CommandName="Approve" Text="Approve" /> 
        <asp:LinkButton CommandName="Deny" Text="Deny /> 
        <asp:LinkButton CommandName="Return" Text="Deny" />
    </ItemTemplate>
</asp:TemplateField>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...