Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Editable gridview is not working

I have an editable gridview which the user can edit each row just by pressing linkbutton. I am getting an error and it stops my work. please help me.

HTML

<asp:GridView ID="gvList" runat="server" class="gv" CellPadding="2"  
Font-Names="Calibri" ForeColor="#333333"
Font-Size="16px" Width="500px" AutoGenerateColumns="true" OnRowCancelingEdit="gvList_RowCancelingEdit"
OnRowEditing="gvList_RowEditing" OnRowUpdating="gvList_RowUpdating">
     <Columns>
         <asp:TemplateField HeaderText="User Name" HeaderStyle-ForeColor="White"  HeaderStyle-Font-Bold="true" ItemStyle-Width="170px">
         <ItemTemplate>
              <asp:Label runat="server" ID="lblUsername" Text='<%# Eval("cUserName") %>'></asp:Label>
         </ItemTemplate>
         <EditItemTemplate>
              <asp:TextBox ID="Editusername" runat="server" Text='<%# Eval("cUserName") %>'></asp:TextBox>
         </EditItemTemplate>

         </asp:TemplateField>
         <asp:TemplateField HeaderText="Dept User" HeaderStyle-ForeColor="White"  HeaderStyle-Font-Bold="true" ItemStyle-Width="170px">
         <ItemTemplate>
              <asp:Label runat="server" ID="lblDept" Text='<%#  iif(Eval("lDeptUser"),"Yes","No")  %>'></asp:Label>
         </ItemTemplate>
         <EditItemTemplate>
              <asp:RadioButtonList ID="RadioButtonList1" runat="server" >
              <asp:ListItem>Yes</asp:ListItem>
              <asp:ListItem>No</asp:ListItem>
              </asp:RadioButtonList>
          </EditItemTemplate>
          </asp:TemplateField>

          <asp:TemplateField HeaderText="Actions" HeaderStyle-ForeColor="White" HeaderStyle-Font-Bold="true" ItemStyle-Width="160px">
          <ItemTemplate>
              <asp:LinkButton  ID="btnedit" CommandName="Edit" runat="server" Text="Edit" />
              <asp:LinkButton ID="btnDelete" CommandName="Delete" runat="server" Text="Delete" />
          </ItemTemplate>
          <EditItemTemplate>
               <asp:LinkButton ID="btnUpdate" CommandName="Update" runat="server" Text="Update" />
               <asp:LinkButton  ID="btnCancel" CommandName="Cancel" runat="server" Text="Cancel" />
           </EditItemTemplate>
                    <HeaderStyle Font-Bold="True" ForeColor="White"></HeaderStyle>
                    <ItemStyle Width="120px"></ItemStyle>
                </asp:TemplateField>
            </Columns>
                <EmptyDataTemplate>
                    No records available
                </EmptyDataTemplate>
                <HeaderStyle BackColor="#808380" Font-Bold="True" ForeColor="White" VerticalAlign="Top" />
                <EditRowStyle BackColor="#2461BF" />
                <AlternatingRowStyle BackColor="#E3E3E3" />
            </asp:GridView>

VB

Protected Sub gvList_RowUpdating(sender As Object, e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles gvList.RowUpdating

    Dim oldname = DirectCast(gvList.Rows(e.RowIndex).FindControl("lblUsername"), Label)
    Dim username As String = DirectCast(gvList.Rows(e.RowIndex).FindControl("Editusername"), TextBox).Text
    Dim tempUser = DirectCast(gvList.Rows(e.RowIndex).FindControl("RadioButtonList1"), RadioButtonList).SelectedIndex
    Dim query As String = "Update Intranet.dbo.Gn_ISCoordinators SET cUserName=@uname" +
                          ",lDeptUser=@dept WHERE cUserName=@oldName"

    Using con = New SqlConnection(ConfigurationManager.ConnectionStrings("IntranetConnectionString").ConnectionString)
        con.Open()
        Dim cmd = New SqlCommand(query, con)
        cmd.Parameters.AddWithValue("@uname", username)
        cmd.Parameters.AddWithValue("@dept", Convert.ToByte(tempUser))
        cmd.Parameters.AddWithValue("@oldname", oldname)
        cmd.ExecuteNonQuery()
    End Using

    gvList.EditIndex = -1
    GetList()
End Sub

The problem is on the cmd.ExecuteNonQuery() it gives me The parameterized query '(@uname nvarchar(7),@dept tinyint,@oldname nvarchar(4000))Update' expects the parameter '@oldname', which was not supplied.

Any thing wrong in my query?

like image 636
7alhashmi Avatar asked Dec 16 '22 12:12

7alhashmi


1 Answers

Try this

Dim oldname as Label =gvList.Rows(e.RowIndex).FindControl("lblUsername")
    Dim username as TextBox = gvList.Rows(e.RowIndex).FindControl("Editusername")
    Dim tempUser as RadioButtonList = DirectCast(gvList.Rows(e.RowIndex).FindControl("RadioButtonList1"), RadioButtonList).SelectedIndex  


   Dim query As String = "Update Intranet.dbo.Gn_ISCoordinators SET cUserName=@uname" +
                              ",lDeptUser=@dept WHERE cUserName=@oldname"
Using con = New SqlConnection(ConfigurationManager.ConnectionStrings("IntranetConnectionString").ConnectionString)
        con.Open()
        Dim cmd = New SqlCommand(query, con)
        cmd.Parameters.AddWithValue("@uname", username.Text)
        cmd.Parameters.AddWithValue("@dept", Convert.ToByte(tempUser.SelectedIndex))
        cmd.Parameters.AddWithValue("@oldname", oldname.Text)
        cmd.ExecuteNonQuery()
    End Using

you have change the parameter name by making "N" capital in @oldName,so due to that

you are getting that Error

like image 88
Sagar Hirapara Avatar answered Jan 13 '23 14:01

Sagar Hirapara