Как очистить конкретную строку из Gridview на дисплее после нажатия кнопки «Удалить»? - PullRequest
0 голосов
/ 28 января 2019

Ниже приведен код aspx, связанный с Gridview:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" HorizontalAlign="Center" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" OnRowDataBound="GridView1_RowDataBound" OnRowUpdating="GridView1_RowUpdating" OnRowDeleting="GridView1_RowDeleting"  HeaderStyle-BackColor="#00a400" HeaderStyle-ForeColor="White">
        <Columns>
         <asp:BoundField DataField="Product_No" HeaderText="Product No" />
         <asp:TemplateField HeaderText="Image">
         <ItemTemplate>
          <asp:Image ID="Image1" runat="server" Height="100px" Width="120px"
          ImageUrl='<%#"data:Image/png/jpg/jpeg/gif/bmp;base64," + Convert.ToBase64String((byte[])Eval("Product_Image")) %>' />
         </ItemTemplate>         
         </asp:TemplateField>        
         <asp:BoundField DataField="Product_Name" HeaderText="Product" />
         <asp:BoundField DataField="Barcode_No" HeaderText="Barcode" />
         <asp:BoundField DataField="Product_Category_Name" HeaderText="Category" />
         <asp:TemplateField HeaderText="Price" >
         <ItemTemplate>
          <asp:TextBox ID ="TextBox3" runat="server" Width="80px" DataField="Product_Price" Text='<%#string.Format("{0:0.00}",Eval("Product_Price"))%>'/>
          <asp:Label ID="Label4" Text="AUD" runat="server"></asp:Label>
          <asp:Button ID ="Button10" runat="server" OnClick="Price_Update_Click" ValidationGroup="UpdatePrice" CommandArgument="Button11" CommandName="Update"  Text="Update" />
          <asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="TextBox3" ErrorMessage="Must be greater than 0.09 .. Cannot accept integer or character or more than 2 numbers after decimal" Operator="GreaterThan" Type="Currency" ValueToCompare="0.09" Display="Dynamic" />
          <%--<asp:RegularExpressionValidator ID="RegularExpressionValidator1"  runat="server" ErrorMessage="Numbers with only 2 digits after decimal" ControlToValidate="TextBox3" ValidationExpression="^\d{1,9}\.\d{1,2}$"></asp:RegularExpressionValidator>--%>               
          </ItemTemplate>
          </asp:TemplateField>
          <asp:TemplateField HeaderText="Quantity" >
          <ItemTemplate>
          <asp:TextBox ID ="TextBox4" runat="server" Width="60px" DataField="Product_Quantity" Text='<%#Eval("Product_Quantity")%>' />
          <asp:Button ID ="Button11" runat="server" OnClick="Quantity_Update_Click" ValidationGroup="UpdateQuantity" CommandArgument="Button12" CommandName="Update"  Text="Update" />
          <%--<asp:CompareValidator ID="CompareValidator2" runat="server" ControlToValidate="TextBox4" ErrorMessage="Must be greater than 0 .. Cannot accept decimal or character" Operator="GreaterThan" Type="Integer" ValueToCompare="0" Display="Dynamic"  />--%>
          <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="Cannot accept decimal or character" ControlToValidate="TextBox4" ValidationExpression="^[0-9]*$" Display="Dynamic"></asp:RegularExpressionValidator> 
          <asp:Label ID="Label5" runat="server"></asp:Label>     
          </ItemTemplate>
          </asp:TemplateField>
          <asp:BoundField DataField="Grocery_Branch_Name" HeaderText="Branch" />
          <asp:TemplateField HeaderText="Remove Product">
          <ItemTemplate>
          <asp:Button ID="Button12" runat="server" OnClick="Delete_Click" ValidationGroup="DeleteProduct" CommandArgument="Button6" CommandName="Delete" Text="Delete" CausesValidation ="false" />
          </ItemTemplate>
          </asp:TemplateField>
          </Columns>
         </asp:GridView>

Ниже приведен код cs, связанный с удалением продукта с помощью хранимой процедуры:

 protected void Delete_Click(object sender, EventArgs e)
        {
            Button btn = (Button)sender;
            GridViewRow row = (GridViewRow)btn.NamingContainer;
            string ProductId = row.Cells[0].Text;

            string CS;
            CS = ConfigurationManager.ConnectionStrings["Grocery_DemoConnectionString"].ConnectionString; ;
            SqlConnection con = new SqlConnection(CS);
            SqlCommand cmd = new SqlCommand("DeleteProduct", con);
            cmd.CommandType = System.Data.CommandType.StoredProcedure;

            cmd.Parameters.AddWithValue("@ProductNo", ProductId);
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
            MessageBox("Product has been removed from the stock");
}



 protected void GridView1_RowDeleting(object sender, EventArgs e)
        {

        }

Работает процедура удаления сохраненной процедурыуспешно, и конкретный продукт удаляется из таблицы базы данных при событии удаления клика.Также появляется окно сообщения «Продукт был удален со склада»

Однако проблема в том, что Gridview по-прежнему отображает эту конкретную строку продукта, даже если этот конкретный продукт уже удален из базы данных.

Если я нажимаю кнопку «Обновить» вручную, то эта конкретная строка удаленного продукта больше не отображается в Gridview.

Но чего я хочу добиться, так это того, что после нажатия кнопки «Удалить» эта конкретная строка продуктабольше не должен отображаться в Gridview, так что мне не нужно решать его вручную, нажав кнопку Обновить.

Если есть что-то, что мне нужно включить в мой cs-код ИЛИ aspx-код, тогда, пожалуйста, упомяните об этом, чтобы я мог попробовать и проверить это.

...