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