2017-02-26 1 views
1

양식을 작성 중입니다. 동일한 양식에서 현재 데이터도 gridview에 표시하고 있습니다. 삽입 및 선택 저장 프로 시저를 사용하고 있습니다.C# 코드 재사용 가능성

페이지를로드 할 때마다 제출하지 않아도 빈 행이 삽입됩니다.

도움을 주시면 감사하겠습니다.

감사합니다.

이 GridView 컨트롤에게이다

<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> 

이 숨김

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(); 
      } 
     } 
    } 
} 

이것이 삽입 절차 것은

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()) 

이 선택 절차를이다

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 
,174,

답변

1

이것은 데이터 삽입 로직을 Page_Load에 추가했기 때문입니다. 페이지로드가 처음 실행될 때마다 모든 메소드 또는 로직이 실행되고 나머지 페이지가 실행되므로 삽입 로직을 삽입하지 않아야합니다. Page_Load

당신은 .... insertuser();

+0

사람 아 이벤트 호출 제출에 많이 감사 클래스

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(); } } 

를 작성해야하고 ... !! –

+0

http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work을 확인하는 방법을 모르면 내 대답을 수락 할 수 있습니다. – Usman