Добавить новую строку в сетку ASP.NET с помощью кнопки - PullRequest
2 голосов
/ 08 июня 2010

Я работаю в ASP .net 2.0.Я ученик.У меня есть вид сетки, в которой есть кнопка.Пожалуйста, найдите asp mark up ниже

<form id="form1" runat="server">
<div>
    <asp:GridView ID="myGridView" runat="server">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:Button CommandName="AddARowBelow" Text="Add A Row Below"   runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
</div>
</form>

Пожалуйста, найдите код ниже.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Data;
using System.Web.UI.WebControls;

namespace GridViewDemo
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            DataTable dt = new DataTable("myTable");
            dt.Columns.Add("col1");
            dt.Columns.Add("col2");
            dt.Columns.Add("col3");
            dt.Rows.Add(1, 2, 3);
            dt.Rows.Add(1, 2, 3);
            dt.Rows.Add(1, 2, 3);
            dt.Rows.Add(1, 2, 3);
            dt.Rows.Add(1, 2, 3);
            myGridView.DataSource = dt;
            myGridView.DataBind();
        }

        protected void myGridView_RowCommand(object sender, GridViewCommandEventArgs e)
        {

        }
    }
}

Я думал, что когда я нажимаю командную кнопку, она запускает mygridview_rowcommand (), но вместо этого выдает ошибку следующим образом:

Недопустимый аргумент обратной передачи или обратного вызова.Проверка события включена с использованием в конфигурации или <% @ Page EnableEventValidation = "true"%> на странице.В целях безопасности эта функция проверяет, что аргументы для событий обратной передачи или обратного вызова исходят от серверного элемента управления, который первоначально их представил.Если данные действительны и ожидаемы, используйте метод ClientScriptManager.RegisterForEventValidation, чтобы зарегистрировать данные обратной передачи или обратного вызова для проверки.

Может ли кто-нибудь сообщить мне, где я ошибаюсь?

1 Ответ

1 голос
/ 08 июня 2010

Сначала попробуйте отключить проверку события и посмотреть, каков результат, поскольку это очевидная проблема в вашем коде.

<%@ Page EnableEventValidation="false" ...

Однако, , если вы не хотите возвращаться к такому взлому , сделайте следующее:

После этого удалите событие OnCommand из атрибутов кнопки и добавьте событие OnRowCommand к самому GridView.

Пример:

<asp:GridView OnRowCommand="myGridView_RowCommand">
    ...
</asp:GridView>

Это должен быть правильный способ обработки этих команд.
Кнопка должна иметь определенный CommandName, чтобы она работала как положено.

См. Эту страницу для возможных значений и более подробного объяснения этой проблемы. На этой странице также есть рабочий пример , стоит потратить время на его изучение.

...