2013-03-27 2 views
0

У меня есть список объектов, привязанных к gridview. Сетка имеет кнопку удаления, прикрепленную к строке.Отключить обратную передачу для кнопочных полей/командного поля в gridview

Мне нужен список объектов, которые сохраняются через щелчки (как при работе в автономном режиме) Я не хочу использовать сессии или печенье или viewstates

Текущее поведение: Список имеет 4 пунктов => Удалить 1 пункт => Список имеет 3 Items => удалить 1 пункт (Postback) список получает регенерировать с 4 пунктов, после чего удаляет 1.

class Emails 
{ 
    public string Email { get; set; } 
    public Emails(string _Address) 
    { 
     Email = _Address; 
    } 
} 


     if (!IsPostBack) 
     { 
      ListOfEmails = new List<Emails>(); 
      ListOfEmails.Add(new Emails("[email protected]")); 
      ListOfEmails.Add(new Emails("[email protected]")); 
      ListOfEmails.Add(new Emails("[email protected]")); 
      ListOfEmails.Add(new Emails("[email protected]")); 

      GridView1.DataSource = ListOfEmails; 
      GridView1.DataBind(); 
     } 

    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) 
    { 
     string EmailToBeDeleted = GridView1.Rows[e.RowIndex].Cells[0].Text; 
     ListOfEmails.Remove(ListOfEmails.Find(L => L.Email == EmailToBeDeleted)); 
     GridView1.DataSource = null; 
     GridView1.DataSource = ListOfEmails; 
     GridView1.DataBind(); 
    } 

ASPX:

 <asp:BoundField DataField="Email" HeaderText="Email Address" /> 
     <asp:ButtonField ButtonType="Button" CommandName="Delete" HeaderText="Action2" 
      ShowHeader="True" Text="Delete" />  
     <asp:CommandField ButtonType="Image" DeleteImageUrl="~/delete.gif" 
      ShowDeleteButton="True" /> 

«У меня есть две кнопки удаления в данный момент»

+0

поместите их в обновленную панель? –

+0

, которые будут только подавлять сообщение назад или сделать их невидимыми, я хочу отключить их, пока я не буду явно отправлять почту назад. – AngelicCore

ответ

0

Веб-страницы без гражданства. Если вы перезагрузите страницу, все элементы управления и данные будут воссозданы. Вот почему мы используем такие вещи, как Viewstates и Session, для сохранения данных через post/gets. Использование других технологий, таких как панели кеширования и обновления, скрывает только то, что вы используете состояния представления. Единственный вариант, о котором я могу думать, - это читать/записывать в какой-то источник данных (база данных или плоский файл, такой как XML), но это больше накладных расходов, а затем использование представлений или сеансов. Может быть, если вы объясните, почему вы хотите избежать этих вариантов, мы можем придумать решение?

+0

Я не хочу использовать Session/ViewState, потому что я хочу сделать это по-другому. Я хочу сделать это так, как если бы вы сделали это на рабочем столе .net Это работа над списком (в памяти) без обратных ссылок на страницы и только при необходимости. – AngelicCore

+0

Настольные приложения и веб-приложения коренным образом отличаются. Настольные приложения обеспечивают бесшовную связь между графическим интерфейсом и кодом сервера/приложения. Как я уже упоминал выше, HTTP является апатридом. Это означает, что между кодом сервера и кодом, отображаемым в веб-браузере пользователей, нет связи. Это сообщение выполняется с помощью представлений, сеансов и т. Д. Вы можете использовать эти объекты, чтобы приложение выглядело как настольное приложение, но на самом деле оно не будет таким. – jason

+0

Я понимаю, что я решил это, используя Session for persistance. Поведение, которое я хотел, было то, чтобы имитировать настольное приложение, но не использовать пост назад, пока вы не закончите. Например, как кнопка сохранения – AngelicCore

Смежные вопросы