2016-12-12 17 views
0

私は現在Visual Studioを使用してC#でasp.net Webアプリケーションを作成中です。私はしばらくの間、同じ問題に立ち往生し、非常に多くのソリューションを試しました。私は読み込み時に、前のページに登録した子供のデータベーステーブル(名前、dob &ユーザ名(PK))に保存されている情報の一部を表示する必要があります。データベースエントリを削除するためにgridviewでrowdeletingを取得できません

私は問題ありませんこのデータを含むグリッドビューですが、各子供の隣にある削除ボタン/リンクが必要です。子供がデータベーステーブルから完全に削除されます。これは私が働くことができないものです。私が新しいものを試していたところのコメントアウトされたセクションのうち、単純なセクションにスケールアップしました。 griで削除機能を有効にするのは本当に難しいですか? dview?私はコードと共にスクリーンショットを提供しました。誰かが私が間違っているところを指摘できれば、とても感謝しています!前もって感謝します。

Screenshot of error I get when hitting delete

.CS CODE:

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> 

+1

を更新あなたは にリクエストを編集する必要があります[たchildID] = – KreminT

+1

うん、あなたのSQL構文が壊れている[子供] FROM DELETE。あなたはテーブルから列を削除するのではなく、完全なレコードを削除します。また、WHERE部分を残すと、グリッドビューで削除するたびにすべてのレコードが削除されます。 – C4u

+0

これらのコメントの両方が異なることを言っているので、誰かが「どこ」を離れると言います。両方の方法を試してみましたが、[ChildID] = "からDELETE FROM [children]に変更すると構文エラー" = 'の近くに構文が正しくありません。 – ACostea

答えて

1

デザイナを使用することによってのみ、コーディングなしで削除機能を実現できます。したがって、GridViewSqlDataSourceを追加し、設定ウィンドウに「アドバンス」をクリックして、のチェックボックスをオンにします。のINSERT、UPDATE、およびDELETEステートメントを生成します。それだけです。後で、生成されたコードを変更することができます。

string ChildID=GridView1.DataKeys[e.RowIndex].Value.ToString(); 

+0

これにより、テーブルエントリの横にある削除ボタンが機能するようになりますか? – ACostea

+0

@ACosteaはい、試してみてください。 – Mahdi

+0

ああ、私の神様..本当に簡単でしたか?データソースを追加するだけで簡単にコードを入力することに重点を置いているのはなぜですか?何か不足していますか? – ACostea

0

あなたCSコードと画像が異なるFであります互いにロム。 deleteコマンドを使用すると、 'xxxからyyyの形式で削除'に変更する必要があります。あなたの選択コマンドは大丈夫です。

+0

本当ですか?唯一の違いは、貼り付けられたコードのスクリーンショットからコメントアウトしたコードは含めなかったことです。どちらの方法でも、deleteコマンドを( "DELETE FROM [children] where [childID] ="、connect)に変更し、新しい構文エラーが発生しました。 – ACostea

+0

"DELETE FROM [children] where [childID] = '5'" – tserdas

+0

なぜ '5'ですか?申し訳ありませんが、ちょうどコードを貼り付けるのではなく、私がやっていることを理解しています。 – ACostea

0

削除を使用する場合は、列名を使用しないでください。違います。正しい形式は次のとおりです。「tablename」からの削除....

+0

これはいくつかの人がこれを言ったので、私はコードがどのように見えるように更新しましたが、私はまだエラーが表示されます。削除リンクを押すと – ACostea

+0

新しいコードを更新できますか? – atabrizi

0

クリアしおりを要求

DELETE FROM [children] where [ChildID]='"+ChildID+"' 
関連する問題