Событие кнопки ASP.NET GridView - PullRequest
       13

Событие кнопки ASP.NET GridView

0 голосов
/ 02 октября 2009

Я пытаюсь вызвать событие кнопки в виде сетки. Я создал gridview со следующим кодом:

<asp:GridView id="ItemsGrid2" BorderColor="black" CellPadding="3" 
                BorderWidth="1" HeaderStyle-BackColor="DarkSlateGray" HeaderStyle-ForeColor="White"
            AutoGenerateColumns="false" AllowSorting="true" OnSortCommand="Sort_Grid" 
                runat="server" align="center" Font-Name="Verdana" Font-Size="8">
                <Columns>
                <asp:BoundField DataField="Title" HeaderText="Title"/>
                <asp:BoundField DataField="Year" HeaderText="Year" />
                <asp:BoundField DataField="Score" HeaderText="Score" />
                <asp:BoundField DataField="Genre" HeaderText="Genre" />
                <asp:HyperLinkField HeaderText="Link" DataTextField="Link" DataNavigateUrlFields="Link"/>
                <asp:TemplateField HeaderText="Seen">
                    <ItemTemplate>
                        <asp:Button runat="server" Text="Seen" OnClick="Save_Check"/>
                    </ItemTemplate>
                </asp:TemplateField>
                </Columns>
            </asp:GridView>

Я связываю данные с набором данных, все это прекрасно работает. Но сейчас я пытаюсь вызвать событие Save_Check, которое выглядит просто так:

public void Save_Check(object sender, EventArgs e)
        {
           string test = "test"; 
        }

Однако я всегда получаю сообщение об ошибке: «Ошибка сервера в приложении, неверный аргумент в репосте» (Это на голландском языке, поэтому я попытался перевести это как можно более четко).

Есть идеи? Я не эксперт в asp.net. Я обычно только код на C # или веб-сервисы, а иногда и Silverlight. Но на этот раз я хотел сделать это с asp.net.

Ответы [ 2 ]

2 голосов
/ 02 октября 2009

Вы должны добавить событие OnRowCommand в GridView, а затем реализовать обработчик событий. На вашей кнопке вместо реализации OnClick вы должны опционально предоставить атрибуты CommandName и CommandArgument, т. Е.

<asp:Button ID="Button1" runat="server" Text="Seen" CommandName="Seen" CommandArgument='<%#Eval("RecordID") %>'/>

Затем в обработчике событий OnRowCommand вы можете добавить свой код

string test = "test";

Нажатие кнопки всегда будет вызывать событие OnItemCommand, даже если вы не укажете атрибут CommandName, однако это позволяет вам иметь несколько кнопок в строке, чтобы каждая из них выполняла разные функции. CommandArgument позволяет вам предоставить аргумент для вашей функциональности. Например, если вы хотите передать идентификатор человека, которого вы видите, вы можете передать CommandArgument = "<% # Eval (" PersonID ")%>

0 голосов
/ 02 октября 2009

Я попробовал то, что ты сказал. Очень простым способом. Я заметил, что gridview не имеет триггера onItemCommand, но вместо этого я использовал сетку данных.

<asp:DataGrid ID="ItemsGrid" AutoGenerateColumns="false" runat="server" OnItemCommand="Save_Check">
                <Columns>
                    <asp:BoundColumn DataField="Title" HeaderText="Title"></asp:BoundColumn>
                    <asp:ButtonColumn DataTextField="Year"></asp:ButtonColumn>
                </Columns>
            </asp:DataGrid>

Как это работает. Однако, если я создаю столбец шаблона с кнопкой внутри, он выдает ту же ошибку. Также .. Если я изменю тип кнопки столбца кнопки на «кнопку», это снова дает ту же ошибку. Работает с кнопкой ссылки ... Какая разница? Я действительно хотел бы иметь кнопку, потому что ссылка просто выглядит некрасиво;)

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...