Click here to Skip to main content
15,891,033 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
Hi,
I am not able to read selected dropdown values in the gridview_rowupdating event.
it will read always which was bind the last read values.
what is the problem over here..?
<asp:TemplateField HeaderText="From Period" HeaderStyle-HorizontalAlign="Left">
                                   <edititemtemplate>
                                       <asp:DropDownList ID="cmbFrm" runat="server" Style="width: 100px;"
                                           >
                                           <asp:ListItem Text="Please Select" Value="">

                                   </edititemtemplate>
                                   <itemtemplate>
                                       <asp:Label ID="lblFrm" runat="server" Text='<%# Eval("FromPeriod") %>'>
                                   </itemtemplate>
                                    <HeaderStyle HorizontalAlign="Left" />

                                <asp:TemplateField HeaderText="To Period" HeaderStyle-HorizontalAlign="Left">
                                   <edititemtemplate>
                                       <asp:DropDownList ID="cmbTo" runat="server" Style="width: 100px;"
                                           >
                                           <asp:ListItem Text="Please Select" Value="">

                                   </edititemtemplate>
                                   <itemtemplate>
                                       <asp:Label ID="lblTo" runat="server" Text='<%# Eval("ToPeriod") %>'>
                                   </itemtemplate>
                                    <HeaderStyle HorizontalAlign="Left" />

                               <asp:TemplateField HeaderText="Edit" ShowHeader="False" HeaderStyle-HorizontalAlign="Left">
                                   <edititemtemplate>
                                       <asp:LinkButton ID="lbkUpdate" runat="server" CausesValidation="True" CommandName="Update"   Text="Update">
                                       <asp:LinkButton ID="lnkCancel" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel">
                                   </edititemtemplate>
                                   <itemtemplate>
                                       <asp:LinkButton ID="lnkEdit" runat="server" CausesValidation="False" CommandName="Edit"   Text="Edit">
                                   </itemtemplate>
                                   <HeaderStyle HorizontalAlign="Left" />

                                <asp:TemplateField HeaderText="Delete" ItemStyle-HorizontalAlign="Center">
                                        <itemtemplate>
                                            <asp:ImageButton ID="btnDelete" runat="server" CommandName="Delete" Height="20"
                                                ImageUrl="~/images/btn_Delete.gif"
                                                CommandArgument='<%# Eval("emp_number") %>'
                                                 Width="20" ShowDeleteButton="True" ShowHeader="True"/>
                                        </itemtemplate>
                                        <itemstyle horizontalalign="Center" width="2%" />

                              <%-- <asp:CommandField HeaderText="Delete" ShowDeleteButton="True" ShowHeader="True" /> --%>


                   <asp:SqlDataSource ID="dsOtherDept1" runat="server"
                           ConnectionString="<%$ConnectionStrings:MPP%>"
                           SelectCommand="Select distinct V.emp_number as emp_number,emp_name+' '+emp_initial as name,emp_designation,Manpower_Division_ID,FromPeriod, ToPeriod from idpeapp.dbo.view_employee V inner join OtherDeptEmp O on V.emp_number = O.emp_number order by name">


Protected Sub grdDeptEmp_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles grdDeptEmp.RowUpdating
        Dim lblEmpNo As Label = DirectCast(grdDeptEmp.Rows(e.RowIndex).FindControl("lblEmpNo"), Label)
        Dim cmbFrm As DropDownList = DirectCast(grdDeptEmp.Rows(e.RowIndex).FindControl("cmbFrm"), DropDownList)
        Dim cmbTo As DropDownList = DirectCast(grdDeptEmp.Rows(e.RowIndex).FindControl("cmbTo"), DropDownList)
        'cmbFrm.SelectedIndex = cmbFrm.Items.IndexOf(cmbFrm.Items.FindByValue(DataBinder.Eval(e.Row.DataItem, "FromPeriod")))
        If cmbFrm IsNot Nothing And cmbTo IsNot Nothing Then
            Conn.Open()
            StrQry = ""
            StrQry = "update OtherDeptEmp set FromPeriod='" & cmbFrm.SelectedValue & "',ToPeriod='" & cmbTo.SelectedValue & "' where emp_number='" & lblEmpNo.Text & "'"
            Cmd.Connection = Conn
            Cmd.CommandText = StrQry
            Cmd.ExecuteNonQuery()
            Conn.Close()
        End If
        grdDeptEmp.EditIndex = -1
        FillGrid()
    End Sub
 Public Sub FillGrid()
        Conn.Open()
        StrQry = ""
        StrQry = "Select distinct V.emp_number as emp_number,emp_name+' '+emp_initial as name,emp_designation,Manpower_Division_ID,FromPeriod, ToPeriod from idpeapp.dbo.view_employee V inner join OtherDeptEmp O on V.emp_number = O.emp_number order by name"
        SQLDA = New SqlDataAdapter(StrQry, Conn)
        dttable = New DataTable
        SQLDA.Fill(dttable)
        If dttable.Rows.Count > 0 Then
            grdDeptEmp.DataSource = dttable
            grdDeptEmp.DataBind()
        End If
        Conn.Close()
    End Sub
 Protected Sub grdDeptEmp_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles grdDeptEmp.RowDataBound
        Dim sno As New Label
        Dim SrNo As Integer
        If e.Row.RowType = DataControlRowType.DataRow Then
            SrNo = (grdDeptEmp.PageIndex + 1) * 10 - 9
            sno = e.Row.FindControl("Sno")
            sno.Text = e.Row.RowIndex + SrNo
            sno.DataBind()
        End If
        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim cmbFrm As DropDownList = DirectCast(e.Row.FindControl("cmbFrm"), DropDownList)
            If cmbFrm IsNot Nothing Then
                cmbFrm.DataSource = dsOtherDept1
                cmbFrm.DataTextField = "FromPeriod"
                cmbFrm.DataValueField = "FromPeriod"
                cmbFrm.DataBind()
                cmbFrm.SelectedIndex = cmbFrm.Items.IndexOf(cmbFrm.Items.FindByValue(DataBinder.Eval(e.Row.DataItem, "FromPeriod")))
            End If
        End If
        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim cmbTo As DropDownList = DirectCast(e.Row.FindControl("cmbTo"), DropDownList)
            If cmbTo IsNot Nothing Then
                cmbTo.DataSource = dsOtherDept1
                cmbTo.DataTextField = "ToPeriod"
                cmbTo.DataValueField = "ToPeriod"
                cmbTo.DataBind()
                cmbTo.SelectedIndex = cmbTo.Items.IndexOf(cmbTo.Items.FindByValue(DataBinder.Eval(e.Row.DataItem, "ToPeriod")))
            End If
        End If
        'If e.Row.RowType = DataControlRowType.DataRow Then
        '    Dim l As ImageButton = DirectCast(e.Row.FindControl("btnDelete"), ImageButton)
        '    l.Attributes.Add("onclick", "javascript:return " & "confirm('Are you sure you want to delete this record " & DataBinder.Eval(e.Row.DataItem, "emp_number") & "')")
        'End If
      
    End Sub
 Protected Sub grdDeptEmp_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles grdDeptEmp.RowCommand
        'Dim StrQry As String
        'Dim emp_number As Integer = Convert.ToInt32(e.CommandArgument)
        If e.CommandName = "Delete" Then
            'get the EmpNumber of the clicked row
            Dim emp_number As Integer = Convert.ToInt32(e.CommandArgument)
            'Delete the record 
            'dsOtherDept1.DeleteCommand = "delete from OtherDeptEmp where emp_number =" & emp_number
            'dsOtherDept1.DataBind()
            If emp_number.ToString IsNot Nothing Then
                Conn.Open()
                StrQry = ""
                StrQry = "delete from OtherDeptEmp where emp_number='" & emp_number & "'"
                Cmd.Connection = Conn
                Cmd.CommandText = StrQry
                Cmd.ExecuteNonQuery()
                Conn.Close()
            End If
        End If
        FillGrid()
    End Sub
Posted
Updated 12-Jul-11 0:32am
v2
Comments
Prerak Patel 12-Jul-11 6:32am    
Use pre tags for your code. Share only relevant code.

1 solution

Way too much code here, but if you populate your list every time, and do it before prerender, then the reseting of the data also causes the selection to be lost. Use IsPostback to check.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900