У меня возникла проблема с моим событием Click to Button (Кнопка изображения) Удалить. Я знаю, что есть другие вопросы по этому поводу, но я ничего не понял!Недопустимый аргумент обратной передачи или обратного вызова в ImageButton
Я не понял ответа! Я сделал все, что указывает на все остальные вопросы! Другие события на этой странице, которые делают «перенаправление», например, хороши!
Я понятен? Нужна более подробная информация? Трассировка стека или больше кода?
Ошибка:
Invalid постбэк или аргумент обратного вызова. Проверка событий разрешена с использованием в конфигурации или <% @ Страница EnableEventValidation = "true"%> на странице. В целях безопасности эта функция проверяет, что аргументы для событий обратной передачи или обратного вызова берутся из серверного элемента управления, который их первоначально визуализировал. Если данные действительны и ожидаются, используйте метод ClientScriptManager.RegisterForEventValidation, чтобы зарегистрировать данные обратной передачи или обратного вызова для проверки.
Моя страница:
<div id="Users" align="center">
<asp:Button ID="btnCreate" class="btn" Font-Bold="true" runat="server" OnClick="btnCreate_OnClick" />
<br />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" GridLines="None"
CssClass="table table-bordered table-striped" HeaderStyle-Font-Size="14px">
<Columns>
<asp:BoundField DataField="UserName" />
<asp:BoundField DataField="DisplayName" />
<asp:BoundField DataField="Email" />
<asp:BoundField DataField="ProfileName" />
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="btnEdit" ImageUrl="style/edit_16.png" runat="server" OnClick="btnEdit_OnClick" />
<asp:ImageButton ID="btnDelete" ImageUrl="style/delete_16.png" runat="server" OnClick="btnDelete_OnClick" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
Мое событие:
protected void btnDelete_OnClick(object sender, EventArgs e)
{
Button btn = (Button)sender;
GridViewRow row = (GridViewRow)btn.NamingContainer;
string UserName = row.Cells[0].Text;
using (objConexao = new SqlConnection(strStringConexao))
{
using (objCommand = new SqlCommand(strDeleteUser, objConexao))
{
try
{
objConexao.Open();
objCommand.Parameters.AddWithValue("@UserName", UserName);
var objDataReader = objCommand.ExecuteReader();
}
finally
{
objConexao.Close();
}
}
}
}
Мой Page_Load и CarregaGrid()
public void CarregaGrid()
{
var listaRequest = new UsersNDR().ConsultUsers();
if (listaRequest != null)
{
this.GridView1.DataSource = listaRequest;
this.GridView1.DataBind();
foreach (GridViewRow row in GridView1.Rows)
{
string idioma = CultureInfo.CurrentCulture.TwoLetterISOLanguageName.ToString();
if (Session["idioma"].ToString() != null)
{
idioma = Session["idioma"].ToString();
}
ImageButton btnDelete = (ImageButton)row.FindControl("btnDelete");
ImageButton btnEdit = (ImageButton)row.FindControl("btnEdit");
btnDelete.ToolTip = Idioma.RetornaMensagem("btnDelete");
btnEdit.ToolTip = Idioma.RetornaMensagem("btnEdit");
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
string idioma = CultureInfo.CurrentCulture.TwoLetterISOLanguageName.ToString();
if (Session["idioma"].ToString() != null)
{
idioma = Session["idioma"].ToString();
}
Idioma.MudaCultura(idioma);
btnCreate.Text = Idioma.RetornaMensagem("btnCreate");
GridView1.Columns[0].HeaderText = Idioma.RetornaMensagem("UserName");
GridView1.Columns[1].HeaderText = Idioma.RetornaMensagem("DisplayName");
GridView1.Columns[2].HeaderText = Idioma.RetornaMensagem("email");
GridView1.Columns[3].HeaderText = Idioma.RetornaMensagem("ProfileName");
GridView1.Columns[4].HeaderText = Idioma.RetornaMensagem("Action");
CarregaGrid();
}
На стороне записки, вы не нуждаетесь в 'Try-finally' блок, который закрывает соединение, то есть то, что' используя (objConexao = новый SqlConnection (strStringConexao)) 'делает автоматически для тебя. –
Можете ли вы опубликовать код из своего события 'Page_Load'? –