2017-02-26 11 views
1

私はフォームを作成しています。同じフォーム上で私は現在のデータをgridviewにも表示しています。私は挿入と選択のためのストアドプロシージャを使用しています。c#コードの再利用性

ページが読み込まれるたびに、送信しなくても空の行が挿入されます。

何か助けていただければ幸いです。

ありがとうございました。

これは、これが、これはこの

USE [IBS_3] 
GO 
/****** Object: StoredProcedure [dbo].[spSelUser] Script Date: 02-26-2017 15:47:08 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER PROCEDURE [dbo].[spSelUser] 
AS 
    SET NOCOUNT ON; 
SELECT  userID, userFname, userLName, userMoNo, userEmail, userCity, userArea, userType, userStatus, strOwner, db_tstamp 
FROM   tbl_users 
選択手順であるインサート手順

USE [IBS_3] 
GO 
/****** Object: StoredProcedure [dbo].[spInsUser] Script Date: 02-26-2017 15:46:07 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER PROCEDURE [dbo].[spInsUser] 
(
    @userFname nvarchar(50), 
    @userLName nvarchar(50), 
    @userMoNo nvarchar(50), 
    @userEmail nvarchar(50), 
    @userCity nvarchar(50), 
    @userArea nvarchar(50), 
    @userType nvarchar(50), 
    @userStatus nvarchar(50), 
    @strOwner nvarchar(50), 
    @db_tstamp datetime2 
) 
AS 
    SET NOCOUNT OFF; 
INSERT INTO [tbl_users] ([userFname], [userLName], [userMoNo], [userEmail], [userCity], [userArea], [userType], [userStatus], [strOwner], [db_tstamp]) VALUES (@userFname, @userLName, @userMoNo, @userEmail, @userCity, @userArea, @userType, @userStatus, @strOwner, @db_tstamp); 

SELECT userID, userFname, userLName, userMoNo, userEmail, userCity, userArea, userType, userStatus, strOwner, db_tstamp FROM tbl_users WHERE (userID = SCOPE_IDENTITY()) 

で分離コード

using System.Configuration; 
using System.Data; 
using System.Data.SqlClient; 

namespace IBS3.admin 
{ 
    public partial class add_user : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      string cs = ConfigurationManager.ConnectionStrings["IBS_3"].ConnectionString; 
      using (SqlConnection conn = new SqlConnection(cs)) 
      { 

       SqlCommand cmd = new SqlCommand("spInsUser", conn); 
       cmd.CommandType = CommandType.StoredProcedure; 

       cmd.Parameters.Add("userFName", SqlDbType.NVarChar).Value = txtFName.Text; 
       cmd.Parameters.Add("userLName", SqlDbType.NVarChar).Value = txtLName.Text; 
       cmd.Parameters.Add("userMoNo", SqlDbType.NVarChar).Value = txtMoNo.Text; 
       cmd.Parameters.Add("userEmail", SqlDbType.NVarChar).Value = txtEmail.Text; 
       cmd.Parameters.Add("userCity", SqlDbType.NVarChar).Value = txtCity.Text; 
       cmd.Parameters.Add("userArea", SqlDbType.NVarChar).Value = txtArea.Text; 
       cmd.Parameters.Add("userType", SqlDbType.NVarChar).Value = txtUserType.Text; 
       cmd.Parameters.Add("userStatus", SqlDbType.NVarChar).Value = txtStatus.Text; 
       cmd.Parameters.Add("@strOwner", SqlDbType.VarChar).Value = User.Identity.Name; 
       cmd.Parameters.Add("@db_tstamp", SqlDbType.DateTime2).Value = DateTime.Now; 
       conn.Open(); 
       cmd.ExecuteNonQuery(); 
      } 
     } 
    } 
} 

ある

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="userID" DataSourceID="SqlDataSource1"> 
     <Columns> 
      <asp:BoundField DataField="userID" HeaderText="userID" InsertVisible="False" ReadOnly="True" SortExpression="userID" /> 
      <asp:BoundField DataField="userFname" HeaderText="userFname" SortExpression="userFname" /> 
      <asp:BoundField DataField="userLName" HeaderText="userLName" SortExpression="userLName" /> 
      <asp:BoundField DataField="userMoNo" HeaderText="userMoNo" SortExpression="userMoNo" /> 
      <asp:BoundField DataField="userEmail" HeaderText="userEmail" SortExpression="userEmail" /> 
      <asp:BoundField DataField="userCity" HeaderText="userCity" SortExpression="userCity" /> 
      <asp:BoundField DataField="userArea" HeaderText="userArea" SortExpression="userArea" /> 
      <asp:BoundField DataField="userType" HeaderText="userType" SortExpression="userType" /> 
      <asp:BoundField DataField="userStatus" HeaderText="userStatus" SortExpression="userStatus" /> 
      <asp:BoundField DataField="strOwner" HeaderText="strOwner" SortExpression="strOwner" /> 
      <asp:BoundField DataField="db_tstamp" HeaderText="db_tstamp" SortExpression="db_tstamp" /> 
     </Columns> 
    </asp:GridView> 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:IBS_3 %>" SelectCommand="SELECT * FROM [tbl_users]"></asp:SqlDataSource> 

GridViewコントロールであります

答えて

1

これは、データの挿入ロジックをPage_Loadに追加したことによるものです。ページの読み込みが最初に実行されたときに、すべてのメソッドまたはロジックが実行された後にページの残りの部分が実行されるので、挿入ロジックを配置しないでください。Page_Load

あなたは

private void insertuser() 
{ 

string cs = ConfigurationManager.ConnectionStrings["IBS_3"].ConnectionString; 
      using (SqlConnection conn = new SqlConnection(cs)) 
      { 

       SqlCommand cmd = new SqlCommand("spInsUser", conn); 
       cmd.CommandType = CommandType.StoredProcedure; 

       cmd.Parameters.Add("userFName", SqlDbType.NVarChar).Value = txtFName.Text; 
       cmd.Parameters.Add("userLName", SqlDbType.NVarChar).Value = txtLName.Text; 
       cmd.Parameters.Add("userMoNo", SqlDbType.NVarChar).Value = txtMoNo.Text; 
       cmd.Parameters.Add("userEmail", SqlDbType.NVarChar).Value = txtEmail.Text; 
       cmd.Parameters.Add("userCity", SqlDbType.NVarChar).Value = txtCity.Text; 
       cmd.Parameters.Add("userArea", SqlDbType.NVarChar).Value = txtArea.Text; 
       cmd.Parameters.Add("userType", SqlDbType.NVarChar).Value = txtUserType.Text; 
       cmd.Parameters.Add("userStatus", SqlDbType.NVarChar).Value = txtStatus.Text; 
       cmd.Parameters.Add("@strOwner", SqlDbType.VarChar).Value = User.Identity.Name; 
       cmd.Parameters.Add("@db_tstamp", SqlDbType.DateTime2).Value = DateTime.Now; 
       conn.Open(); 
       cmd.ExecuteNonQuery(); 
      } 
} 

クラスを作成し、上のイベントのコールinsertuser();

+0

を提出しなければならない男ああ....おかげでたくさん...! –

+0

あなたは私がどのようにこのhttp://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-workをチェックするのかわからない場合、私の答えを受け入れることができます – Usman

関連する問題