asp.net
  • vb.net
  • 2013-06-07 3 views 0 likes 
    0

    еще раз.Как удалить определенную строку записей в gridview?

    На GridView разметки, у меня есть эти:

    <asp:TemplateField HeaderText="Dates"> 
        <ItemTemplate> 
         <asp:Label ID="dates_label runat="server" Text='<%# Bind("shipDates","{0:M/dd/yyyy}") %>'></asp:Label> 
        </ItemTemplate> 
        </asp:TemplateField> 
    
    
        <asp:TemplateField> 
        <ItemTemplate> 
        <asp:HiddenField ID="ehide" Value='<%# Eval("eventId") %>' runat="server" /> 
        </ItemTemplate> 
        </asp:TemplateField> 
    

    Элемент GridView отображает несколько строк записей и используя скрытое поле формы, я могу связать ряд с его специфической EventID из таблицы событий.

    Ниже приведен код, который пытается удалить каждую строку записей.

    For Each row As GridViewRow In GridView1.Rows 
         Dim dates_label = DirectCast(row.FindControl("dates_label"), Label) 
         Dim shipDates = Date.ParseExact(dates_label.Value, "M/dd/yyyy", Nothing) 
    
         Dim ehide = DirectCast(row.FindControl("ehide"), HiddenField) 
         Dim eventid = ehide.Value 
    
         Dim myConnectionString As [String] = ConfigurationManager.ConnectionStrings("DBConnectionString").ConnectionString 
         Dim myConnection As New SqlConnection(myConnectionString) 
         Try 
          myConnection.Open() 
          strSQL = "Delete from tblEvents where [email protected] and eventid = @eventid" 
          com = New SqlCommand(strSQL, myConnection) 
          com.Parameters.AddWithValue("@username", Session("username")) 
          com.Parameters.AddWithValue("@eventid", eventid) 
          Response.Write(strSQL) 
          Response.End() 
          com.ExecuteNonQuery() 
          myConnection.Close() 
          Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('Information Saved successfully')</SCRIPT>") 
          Response.Redirect("~/default.aspx") 
         Catch ex As SqlException 
          Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('" + ex.Message + "')</SCRIPT>") 
         Finally 
          myConnection.Close() 
         End Try 
        Next 
    

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

    Например, предположим, что в таблице событий есть 5 строк записей, а идентификаторы событий - 1,2,3,4,5. Они составлены для краткости.

    Если я пытаюсь удалить первую запись с EVENTID 1, я получаю:

    удалить из tblEvents где EVENTID = 1

    При попытке удалить строку с EVENTID 5, я все еще получаю:

    Удалить из tblEvents где EVENTID = 1

    Как решить эту проблему в таким образом, что каждая строка будет удален его RowId?

    Заранее спасибо.

    +0

    Не могли бы вы опубликовать код '' ehide' внутри осины: TemplateField' и удалить 'жереха. net-mvc', потому что вопрос не является 'mvc'. – Win

    +0

    @win, извините, mvc был ошибкой. Я хотел выбрать asp.net. Спасибо за исправление. Кроме того, очень жаль, я отправил неправильный код. Теперь я разместил правильный код. BTW: eventid является целым числом, если это помогает. THANKS – Kenny

    +0

    Почему вы перенаправляетесь на страницу в середине цикла? – fnostro

    ответ

    0

    Предположения, основанные на нашей дискуссии.

    1. У вас есть GridView, который имеет выбор строк позволило
    2. Вы также удалить строки включены. (EDIT: Just rememberd this option won't be available until you place the delete command in the SqlDataSource control)
    3. Это EventID приходит из базы данных

    Если все это правда, то deleteing строк смешного прост:

    1. Поместите EventID в GridView1 DataKeyNames через страницу свойств.
    2. Из конструктора выберите элемент управления SqlDataSource подключен к GridView1
    3. В списке SqlDataSource недвижимости

      • а. найти DeleteQuery и выбрать его (Запрос)
      • b.Откроется диалоговое окно Command и Parameter Editor
        1. УДАЛИТЬ Команда: "DELETE FROM tblEvents WHERE (username = @UserName) AND (eventid = @eventid)
        2. нажмите кнопку Refresh Parameters в диалоговом
        3. Имя пользователя: Параметр Source является сессия, с SessionField в соответствующих
        4. EventID: Параметр Источник является Контроль с ControlID из GridView1
    4. Сохранить него все

    Теперь Delete команда «проводной» для первичного ключа (кода события) и удалить должно работать

    +0

    Большое спасибо за ваши усилия. У меня все же есть такая же проблема. Когда я нажимаю delete, я * не * хочу удалить все. Я просто хочу удалить строку, на которую я нажал. Вот почему я привел пример id 1,2,3,4,5 в качестве примера. Если я нажимаю на строку с Id 1, я хочу удалить только эту строку. Если я нажму на другую строку с Id 2, я хочу, чтобы эта строка была удалена. Я хочу удалить определенную строку, которую я нажал Опять же, я очень ценю ваши усилия. – Kenny

    +0

    ok - У каждой строки есть своя кнопка удаления? или вы выбираете строку, а затем удаляете кнопку удаления вне gridview? – fnostro

    +0

    Каждая строка имеет свою собственную кнопку удаления – Kenny

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

    • Нет связанных вопросов^_^