troubleshooting Question

Use a checkbox to edit gridview

Avatar of Ru1995
Ru1995Flag for United States of America asked on
.NET ProgrammingASP.NET
3 Comments1 Solution576 ViewsLast Modified:
I'm trying to use a checkbox to edit items in a grid view.  Instead of the user clicking on a edit hyperlink to edit the grid I want them to select a check box.  Below is the code that I'm using.  What I want to do is make it to where if a user clicks on a check box the edit function executes where the user can update the information being pulled from the database to populate the grid.  How can I do this?


 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
    <asp:GridView ID="GridView1" runat="server" OnRowEditing="EditJob" OnRowUpdating="UpdateJob"
                    OnRowCancelingEdit="CancelEdit" OnRowDeleting="delete" AutoGenerateColumns="False"
                    CellPadding="4" DataKeyNames="job_id" 
            OnPageIndexChanging="GridView1_PageIndexChanging" DataSourceID="sqlJobList" ShowFooter="True" 
                    ForeColor="#333333" GridLines="None" Height="148px" Width="866px"  
            AllowSorting="True"> 
        <RowStyle BackColor="#E3EAEB" />
        <Columns>
             <asp:CommandField ShowDeleteButton="True" ShowEditButton="false" />
             <asp:TemplateField ShowHeader="False">
                <ItemTemplate>
                    <asp:LinkButton ID="btnView" runat="server" CausesValidation="False" 
                        CommandArgument='<%# Eval("job_id") %>' OnCommand="viewPosting" Text="View"></asp:LinkButton>
                </ItemTemplate>
            </asp:TemplateField>

 <asp:TemplateField HeaderText="Job ID" InsertVisible="False" 
                SortExpression="job_id" Visible="False">
                <EditItemTemplate>
                    <asp:Label ID="lbljob_id" runat="server" Text='<%# Bind("job_id") %>'></asp:Label>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="lbljob_id" runat="server" Text='<%# Bind("job_id") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>

 <asp:TemplateField HeaderText="Title">
                <ItemTemplate>
                    <asp:Label ID="lbltitle" runat="server" Text='<%# Eval("title") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="txtTitle" runat="server" Text='<%# Eval("title") %>'></asp:TextBox>
                </EditItemTemplate>
                <FooterTemplate>
                    <asp:TextBox ID="txtTitle" runat="server"></asp:TextBox>
                </FooterTemplate>
            </asp:TemplateField>


            <asp:TemplateField HeaderText="Region">
                <ItemTemplate>
                    <asp:Label ID="lblRegion" runat="server" Text='<%# Eval("Region") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="txtRegion" runat="server" Text='<%# Eval("Region") %>'></asp:TextBox>
                </EditItemTemplate>
                <FooterTemplate>
                    <asp:TextBox ID="txtRegion" runat="server"></asp:TextBox>
                </FooterTemplate>
            </asp:TemplateField>
            
             <asp:TemplateField HeaderText="Open Posting">
                <ItemTemplate>
                    <asp:Label ID="lblOpen_Check" runat="server" Text='<%# Eval("open_check") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:DropDownList ID="DropDownList1" runat="server" 
                        SelectedValue='<%# Bind("open_check") %>'>
                        <asp:ListItem Value="y">Yes</asp:ListItem>
                        <asp:ListItem Value="n">No</asp:ListItem>
                    </asp:DropDownList>
                </EditItemTemplate>
                <FooterTemplate>
                     <asp:DropDownList ID="DropDownList1" runat="server" 
                        SelectedValue='<%# Bind("open_check") %>'>
                        <asp:ListItem Value="y">Yes</asp:ListItem>
                        <asp:ListItem Value="n">No</asp:ListItem>
                    </asp:DropDownList>
                </FooterTemplate>
            </asp:TemplateField>

            <asp:TemplateField HeaderText="Open ID" InsertVisible="False" 
                SortExpression="openjob_id" Visible="False">
                <EditItemTemplate>
                    <asp:Label ID="lblopenjob_id" runat="server" Text='<%# Bind("openjob_id") %>'></asp:Label>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="lblopenjob_id" runat="server" Text='<%# Bind("openjob_id") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>



             <asp:TemplateField HeaderText="Close Date">
                <ItemTemplate>
                    <asp:Label ID="lblClose_Date" runat="server" Text='<%# Eval("close_date") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="txtclose_date" runat="server" Text='<%# Eval("close_date") %>'></asp:TextBox>
                </EditItemTemplate>
                <FooterTemplate>
                    <asp:TextBox ID="txtclose_date" runat="server"></asp:TextBox>
                </FooterTemplate>
            </asp:TemplateField>

 <%--Use checkbox to edit items--%>
            <asp:TemplateField HeaderText="Action CheckBox">
            <ItemTemplate>
                <asp:CheckBox ID="chkSelect" runat="server" OnCheckedChanged="EditJob" AutoPostBack="true" />
            </ItemTemplate>
            <HeaderTemplate>
                <input id="chkSelect" name="Select All" onclick="SelectAll(this)" type="checkbox"
                runat="server" />All
            </HeaderTemplate>
            <FooterTemplate>
                <asp:Button ID="btnadd" runat="server" Text="Add" OnClick="AddNewJob" />
                </FooterTemplate>

</asp:TemplateField>
            </Columns>
    </asp:GridView>
    </ContentTemplate>
    </asp:UpdatePanel>


<!--Here is the code behind part of the page

  '**insert new Job in gridview**

    Protected Sub AddNewJob(ByVal sender As Object, ByVal e As EventArgs)
        Dim Title As String = DirectCast(GridView1.FooterRow.FindControl("txtTitle"), TextBox).Text
        Dim Region As String = DirectCast(GridView1.FooterRow.FindControl("txtRegion"), TextBox).Text
        Dim open_check As String = DirectCast(GridView1.FooterRow.FindControl("DropDownList1"), DropDownList).SelectedValue

        ' Dim close_date As String = DirectCast(GridView1.FooterRow.FindControl("DropDownList1"), DropDownList).SelectedValue
        Dim cmd As New SqlCommand()
        cmd.CommandType = CommandType.Text
        cmd.CommandText = "insert into tblJobPostings(Title,Region,open_check) values(@Title,@Region,@open_check); SELECT  job_id, [openjob_id],[title], [open_check], [region],[close_date] FROM (SELECT j.job_id, [openjob_id],[title], [open_check], [region],[close_date],ROW_NUMBER() OVER(PARTITION BY j.job_id ORDER BY [close_date] DESC) AS RowNo FROM [tblJobPostings] j LEFT OUTER JOIN [tblOpenJobs] hON j.job_id = h.job_id  )sub WHERE sub.RowNo = 1"
        cmd.Parameters.Add("@Title", SqlDbType.VarChar).Value = Title
        cmd.Parameters.Add("@Region", SqlDbType.VarChar).Value = Region
        cmd.Parameters.Add("@open_check", SqlDbType.VarChar).Value = open_check
        'cmd.Parameters.Add("@close_date", SqlDbType.VarChar).Value = close_date
        cmd.Connection = con
        con.Open()
        cmd.ExecuteNonQuery()
        con.Close()
        binddata()
    End Sub

    'Function to bind data
    Private Sub binddata()

        con.Open()
        Dim query As New String("SELECT  job_id, [openjob_id],[title], [open_check], [region],[close_date] FROM (SELECT j.job_id, [openjob_id],[title], [open_check], [region],[close_date], ROW_NUMBER() OVER(PARTITION BY j.job_id ORDER BY [close_date] DESC) AS RowNo FROM [tblJobPostings] j LEFT OUTER JOIN [tblOpenJobs] h ON j.job_id = h.job_id  ) sub WHERE sub.RowNo = 1 ")
        Dim da As New SqlDataAdapter(query, con)
        Dim ds As New DataSet()
        da.Fill(ds)
        If ds.Tables(0).Rows.Count > 0 Then
            'GridView1.DataSource = ds
            GridView1.DataBind()
            con.Close()
        End If
    End Sub

    '***to edit gridview**
    Protected Sub EditJob(ByVal sender As Object, ByVal e As GridViewEditEventArgs)
        GridView1.EditIndex = e.NewEditIndex
        binddata()
    End Sub

    '**to cancel edit**
    Protected Sub CancelEdit(ByVal sender As Object, ByVal e As GridViewCancelEditEventArgs)
        GridView1.EditIndex = -1
        binddata()
    End Sub

    '**to delete from gridview from database**
    Protected Sub delete(ByVal sender As Object, ByVal e As GridViewDeleteEventArgs)
        con.Open()
        Dim cmd As New SqlCommand("delete from tblJobPostings where job_id=@job_id", con)
        cmd.Parameters.Add("@job_id", SqlDbType.Int).Value = DirectCast(GridView1.Rows(e.RowIndex).FindControl("lbljob_id"), Label).Text
        cmd.ExecuteNonQuery()
        con.Close()
        binddata()
    End Sub

    '**to update from gridview and database**
    Protected Sub UpdateJob(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs)
        Dim job_id As Integer = DirectCast(GridView1.FooterRow.FindControl("lbljob_id"), Label).Text
        Dim openjob_id As Integer = DirectCast(GridView1.FooterRow.FindControl("lblopenjob_id"), Label).Text
        Dim close_date As Date = DirectCast(GridView1.FooterRow.FindControl("txtclose_date"), TextBox).Text
        Dim open_check As String = DirectCast(GridView1.FooterRow.FindControl("DropDownList1"), DropDownList).SelectedValue
        'execute store procedure
        con.Open()
        Dim cmd As New SqlCommand("spJobPostings", con)
        cmd.CommandType = CommandType.StoredProcedure

        cmd.Parameters.AddWithValue("@job_id", CInt(job_id))
        cmd.Parameters.AddWithValue("@openjob_id", CInt(openjob_id))
        cmd.Parameters.AddWithValue("@close_date", CDate(close_date))
        cmd.Parameters.AddWithValue("@open", CStr(open_check))


    End Sub

   Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As GridViewPageEventArgs)
        GridView1.PageIndex = e.NewPageIndex
        binddata()
    End Sub

    Protected Sub dvJobs_ItemInserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewInsertedEventArgs) Handles dvJobs.ItemInserted
        GridView1.DataBind()

    End Sub

    Protected Sub dvJobs_ItemUpdated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewUpdatedEventArgs) Handles dvJobs.ItemUpdated
        GridView1.DataBind()
    End Sub


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Not Page.IsPostBack Then
            'tabMenu.Tabs("3").Selected = True
            binddata()
        End If

    End Sub
ASKER CERTIFIED SOLUTION
kblau

Our community of experts have been thoroughly vetted for their expertise and industry experience.

Join our community to see this answer!
Unlock 1 Answer and 3 Comments.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 3 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros