Hi. I have a gidview control that will not update using AJAX. I cant for the life of me figure out why. all of the other buttons in the panel work. The odd thing is one button in the gridview works, the other does not. Cant figure out why.
The Problem occurs when clicking the "delete" buttonfield in the gridview control...
My ASP.NET markup:
<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Site.Master" CodeBehind="Extract.aspx.vb" Inherits="KB.Extract" %><asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"></asp:Content><asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"><asp:ScriptManager ID="scmAjax" runat="server" ></asp:ScriptManager><div class="body-content"><asp:UpdatePanel ID="uppUI" runat="server" UpdateMode="Always"><ContentTemplate><div class="container body-content"><div class="col-lg-12 "><label>Select Document:</label><asp:DropDownList ID="cmbSelect" runat="server" CssClass="form-control" AutoPostBack="True" DataTextField="DocumentName" DataValueField="ID"></asp:DropDownList><br /></div></div><div class="container "><div class="col-lg-4">
Document Content:<br /><br /><asp:TextBox ID="txtContent" runat="server" CssClass="form-control" ReadOnly="True" Rows="45" TextMode="MultiLine"></asp:TextBox></div><div class="col-lg-4">
Snippet Text:<br /><br /><asp:TextBox ID="txtText" runat="server" CssClass="form-control" Rows="4" TextMode="MultiLine"></asp:TextBox><br /><br />
Select Tags:<br /><br /><asp:Panel ID="pnlTags" runat="server" Wrap="False"></asp:Panel><br /><div class="alert alert-info "><asp:Label ID="lblResponse" runat="server" Text="Ready"></asp:Label></div><br /><br /><asp:Button ID="cmdAdd" runat="server" Text="Add" CssClass="btn btn-primary " /></div><div class="col-lg-4">
Active Tags for this document:<br /><br /><asp:GridView ID="gvcTags" runat="server" AutoGenerateColumns="False" CssClass="table" DataKeyNames="ID"><Columns><asp:BoundField DataField="ID" HeaderText="ID" Visible="False" /><asp:BoundField DataField="Contents" HeaderText="Snip" /><asp:ButtonField Text="<span class='glyphicon glyphicon-tag'></span>" CommandName="Load" HeaderText="Load"><ControlStyle CssClass="btn btn-primary" /></asp:ButtonField><asp:ButtonField Text="<span class='glyphicon glyphicon-trash'></span>" CommandName="Delete" HeaderText="Delete" ><ControlStyle CssClass="btn btn-danger" /></asp:ButtonField></Columns></asp:GridView><br /></div></ContentTemplate></asp:UpdatePanel></div></asp:Content>And my code behind:
Public Class Extract
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim db As New AppDataClassesDataContext
Dim tg As Tag
Dim iqt As IQueryable(Of Tag)
Dim ck As CheckBox
Dim litBreak As New Literal
' lock
cmbSelect.DataSource = (From dx In db.SourceDocs
Order By dx.DocumentDate
Select dx)
cmbSelect.DataBind()
iqt = From tx In db.Tags
Order By tx.TagName
Select tx
For Each tg In iqt
ck = New CheckBox
ck.Text = tg.TagName
ck.ID = ck.ID
pnlTags.Controls.Add(ck)
litBreak = New Literal
litBreak.Text = "<br />"
pnlTags.Controls.Add(litBreak)
Next
UpdateUI()
gvcTags.DataBind()
End Sub
Private Sub UpdateUI()
Dim db As New AppDataClassesDataContext
Dim sd As SourceDoc
' document content
sd = (From sx In db.SourceDocs
Where sx.ID = cmbSelect.SelectedValue
Select sx).FirstOrDefault
If IsNothing(sd) Then
txtContent.Text = Nothing
Else
txtContent.Text = sd.DocumentContent
End If
' existing tags
UpdateTagList()
End Sub
Protected Sub cmdAdd_Click(sender As Object, e As EventArgs) Handles cmdAdd.Click
Dim db As New AppDataClassesDataContext
Dim ck As New CheckBox
Dim TagGroup As New DocumentTagGroup
Dim DocTag As DocumentTag
Dim ctl As Control
With TagGroup
.DocumentID = cmbSelect.SelectedValue
.Contents = txtText.Text
End With
db.DocumentTagGroups.InsertOnSubmit(TagGroup)
db.SubmitChanges()
For Each ctl In pnlTags.Controls
If ctl.GetType() = ck.GetType Then
ck = ctl
If ck.Checked Then
DocTag = New DocumentTag
DocTag.GroupID = TagGroup.ID
DocTag.TagID = CInt(Mid(ck.ID, 4))
db.DocumentTags.InsertOnSubmit(DocTag)
End If
End If
Next
db.SubmitChanges()
lblResponse.Text = "Snippet Tag '" & Left(TagGroup.Contents, 30) & "... Created Succesfully"
UpdateTagList()
End Sub
Private Sub UpdateTagList()
Dim db As New AppDataClassesDataContext
gvcTags.DataSource = (From tx In db.DocumentTagGroups
Where tx.DocumentID = cmbSelect.SelectedValue
Order By tx.Contents
Select New With {.ID = tx.ID, .Contents = Left(tx.Contents, 50)})
gvcTags.DataBind()
End Sub
Private Sub gvcTags_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles gvcTags.RowCommand
Dim db As New AppDataClassesDataContext
Dim idx As Integer = e.CommandArgument
Dim Tg As DocumentTagGroup
If e.CommandName = "Delete" Then
Tg = (From tx In db.DocumentTagGroups
Where tx.ID = CInt(gvcTags.DataKeys(idx).Item(0))
Select tx).First
db.DocumentTagGroups.DeleteOnSubmit(Tg)
db.SubmitChanges()
db = New AppDataClassesDataContext
gvcTags.DataSource = (From tx In db.DocumentTagGroups
Where tx.DocumentID = cmbSelect.SelectedValue
Order By tx.Contents
Select New With {.ID = tx.ID, .Contents = Left(tx.Contents, 50)})
gvcTags.DataBind()
End If
If e.CommandName = "Load" Then
Tg = (From tx In db.DocumentTagGroups
Where tx.ID = CInt(gvcTags.DataKeys(idx).Item(0))
Select tx).First
txtText.Text = Tg.Contents
End If
End Sub
End Classplease help!
Thanks