2010-06-08 1 views
2

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

<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(), но вместо этого он бросил ошибку следующим образом:

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

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

ответ

1

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

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

Однако , если вы не хотите, чтобы restort до такого хака, выполните следующие действия:

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

Пример:

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

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

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

+0

Я сделал, как вы сказали. И тогда я не получил ошибку. Но когда я нажал кнопку, myGridView_RowCommand не срабатывал. Я фактически добавил

 asp:Button OnCommand="myGridView_RowCommand" .... 
и он работал. – SARAVAN

+0

@SARAVAN - кстати, в вашем коде 'GridView' и' myGridView_RowCommand' никак не связаны. – Venemo

+0

asp: Button OnCommand = "myGridView_RowCommand" Посмотрите на приведенный выше код, я действительно добавил его, как только вы ответили на мой вопрос. Во всяком случае, я также обновил код. – SARAVAN