我目前正在使用Visual Studio在C#中创建一个asp.net Web应用程序。我一直坚持同样的问题一段时间,并尝试了很多解决方案。我需要有一个页面,在加载时,显示存储在数据库表中的一些信息(在前一页上注册的孩子的名字,dob和用户名(PK)。
使用此数据填充网格视图没有问题,但我需要在每个子项旁边都有删除按钮/链接,从数据库表中完全删除子项。这是我无法开展的工作。我的代码是一个完整的混乱,充满了我正在尝试新事物的注释部分。截至目前,我已将其缩放回一段简单的代码,并且在gridview中的任何子项旁边单击“删除”时出现错误。
在gridview中启用删除功能真的很难吗?我提供了截图以及我的代码。如果有人能指出我哪里出错了,我会非常感激!提前谢谢。
.CS代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Diagnostics;
using System.Collections;
using System.Configuration;
namespace Coursework
{
public partial class viewandremove : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
using (SqlConnection connect = new SqlConnection("Data Source=THEBEAST;Initial Catalog=newregDB;Integrated Security=True;Pooling=False"))
using (SqlCommand cmd = new SqlCommand("SELECT [firstname], [dob], [ChildID] FROM [children]", connect))
{
connect.Open();
SqlDataAdapter sda = new System.Data.SqlClient.SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
connect.Close();
}
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
}
protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
}
protected void Gridview1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
using (SqlConnection connect = new SqlConnection("Data Source=THEBEAST;Initial Catalog=newregDB;Integrated Security=True;Pooling=False"))
using (SqlCommand cmd = new SqlCommand("DELETE FROM children where childID=", connect))
{
connect.Open();
SqlDataAdapter sda = new System.Data.SqlClient.SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
connect.Close();
}
}
}
}
消息来源代码:
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="viewandremove.aspx.cs" Inherits="Coursework.viewandremove" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<p>
<br />
<asp:GridView ID="GridView1" runat="server" AutoGenerateDeleteButton="True" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" OnRowDeleting="Gridview1_RowDeleting" DataKeyNames="childID" OnSelectedIndexChanging="GridView1_SelectedIndexChanging">
</asp:GridView>
</p>
<p>
</p>
<p>
</p>
答案 0 :(得分:1)
您可以在不编码的情况下实现删除功能,并且只能使用设计器。因此,为SqlDataSource
添加GridView
,在其配置窗口中单击Advance,然后选中生成INSERT,UPDATE和DELETE语句的复选框。就这些。稍后,您可以修改生成的代码。
答案 1 :(得分:0)
您的cs代码和图片彼此不同。如果你使用删除命令,你应该改为'从xxx删除yyy'格式。但你的选择命令似乎没问题。
答案 2 :(得分:0)
使用删除时,不得使用列名。这是错误的。正确的格式是:从&#34; tablename&#34;删除哪里....
答案 3 :(得分:0)
在
之前清除书签 string ChildID=GridView1.DataKeys[e.RowIndex].Value.ToString();
并更新请求
DELETE FROM [children] where [ChildID]='"+ChildID+"'