Member 11377180 Ответов: 1

Gridview Delete не работает..


Мой SQL таблице есть 3 колонки. Имя Пользователя,Пароль,Тип Пользователя.
В GridView им показывать пользователям с GridView в столбцы: имя пользователя, пользовательского. Когда я нажимаю кнопку удалить, строки должны быть удалены из sql, а также из gridview. Там нет никакой ошибки, пожалуйста, дайте мне знать, что это ошибка в моем коде.


<asp:GridView ID="GridView1" runat="server" Width="40%" CellSpacing="2" AutoGenerateColumns="false" CellPadding="4" AllowPaging="true"

        PageSize="10" ForeColor="#333333"

        GridLines="Vertical" OnPageIndexChanging="GridView1_PageIndexChanging" DataKeyNames="Username"

       OnRowDeleting="GridView1_RowDeleting"  >

       

       <Columns>

           <asp:TemplateField HeaderText="Username">
                   <ItemTemplate>
                       <asp:Label ID="lbl2" runat="server" Text='<%#Bind("Username") %>'></asp:Label>
                   </ItemTemplate>
                   <EditItemTemplate>
                      <asp:TextBox ID="txtName" runat="server" Width="140px" Text='<%#Bind("Username")%>'></asp:TextBox>
                  </EditItemTemplate>
                   <ItemStyle HorizontalAlign="Center" />
               </asp:TemplateField>
            <asp:TemplateField HeaderText="UserType">
                   <ItemTemplate>
                       <asp:Label ID="lbl3" runat="server" Text='<%#Bind("UserType") %>'></asp:Label>
                   </ItemTemplate>
                   <EditItemTemplate>
                      <asp:TextBox ID="txtName" runat="server" Width="140px" Text='<%#Bind("UserType")%>'></asp:TextBox>
                  </EditItemTemplate>
                   <ItemStyle HorizontalAlign="Center" />
               </asp:TemplateField>

              <asp:TemplateField HeaderText="Delete User">
                   <ItemTemplate>
                        <span onclick="return confirm('Are you sure to Delete the record?')">
                       <asp:Button ID="btnDelete" runat="server" CommandName="Delete" Text="Delete" />
                   </ItemTemplate>


                   <ItemStyle HorizontalAlign="Center" />
               </asp:TemplateField>
                   <asp:TemplateField >
                   <EditItemTemplate>
                        <asp:Button ID="btnCancel" runat="server" CommandName="Cancel" Text="Cancel" />
                   </EditItemTemplate>
                   <ItemStyle HorizontalAlign="Center" />
               </asp:TemplateField>


           </Columns>
       </asp:GridView

>




protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
       {
           //int Id = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Values[0]);
           Label Username = GridView1.Rows[e.RowIndex].FindControl("lbl2") as Label;
           Label Usertype = GridView1.Rows[e.RowIndex].FindControl("lbl3") as Label;
           string constr = WebConfigurationManager.ConnectionStrings["ConnectString"].ConnectionString;
           using (SqlConnection con = new SqlConnection(constr))
           {
               using (SqlCommand cmd = new SqlCommand("[Sp_InsertUserRegisteration]"))
               {
                   using (SqlDataAdapter sda = new SqlDataAdapter())
                   {
                       cmd.CommandType = CommandType.StoredProcedure;
                       cmd.Parameters.AddWithValue("@Action", "DELETE");
                       cmd.Parameters.AddWithValue("@Username", Username);

                       cmd.Parameters.AddWithValue("@Usertype", Usertype);
                       cmd.Connection = con;
                       con.Open();
                       cmd.ExecuteNonQuery();
                       con.Close();
                   }
               }
           }
           this.BindData();
       }

RossMW

У вас есть первичный ключ на столе? Обновления и удаления обычно не работают без него.

Sinisa Hajnal

нет никакой ошибки, или она будет обработана / проглочена по пути. Положите try..catch внутри rowDeleting. Кроме того, убедитесь, что ваш SP работает при вызове через SQL-клиент с теми же параметрами (то есть проверьте, что вы отправляете в SP. Поместите операторы печати в SP, чтобы вы знали, какие части выполняются.

Я также рекомендую RedGate SQLProfiler.

Shivaram_i

Есть ли у вас какой-либо идентификатор в этом представлении сетки...???потому что вы также должны сравнить этот идентификатор с вашим идентификатором хранимой процедуры..Тогда работает только операция удаления...

1 Ответов

Рейтинг:
0

willington.d

охраняемых недействительными GridView1_RowDeleting(объект отправителя, GridViewDeleteEventArgs е)

Описанное выше событие будет вызвано при нажатии кнопки Удалить команду.

Но я не смог найти ни одной командной кнопки в вашем коде. У вас есть только кнопка удаления внутри шаблона элемента.

https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdeleting(v=vs. 110).aspx[^]


См. ссылку ниже:
http://aspsnippets.com/Blue/Articles/ASPNet-GridView---Delete-Row-with-Confirmation.aspx[^]