2010-02-07 33 views

回答

1

是的,這是可能的。

我與Employee表

使用下面的SQL Server腳本來創建員工展示其提交討論命名tbemployee

CREATE TABLE [dbo].[tbemployee](
[empid] [int] IDENTITY(1,1) NOT NULL, 
[ename] [varchar](50) NULL, 
[eadd] [varchar](50) NULL, 
[esal] [int] NULL, 
[edno] [int] NULL, 

CONSTRAINT [PK_tbemployee] PRIMARY KEY CLUSTERED 
(
    [empid] ASC 
) 
) ON [PRIMARY] 
GO 

插入記錄到FormView控件的源代碼如下所示:

FormView.aspx

<asp:FormView ID="FormView1" runat="server" DataKeyNames="empid" 
     oniteminserting="FormView1_ItemInserting" DefaultMode="Insert" 
     onmodechanging="FormView1_ModeChanging">    
     <InsertItemTemplate> 
      ename: 
      <asp:TextBox ID="txtename" runat="server" Text='<%# Bind("ename") %>' /> 
      <br /> 
      eadd: 
      <asp:TextBox ID="txteadd" runat="server" Text='<%# Bind("eadd") %>' /> 
      <br /> 
      esal: 
      <asp:TextBox ID="txtesal" runat="server" Text='<%# Bind("esal") %>' /> 
      <br /> 
      edno: 
      <asp:TextBox ID="txtedno" runat="server" Text='<%# Bind("edno") %>' /> 
      <br /> 
      <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" 
       CommandName="Insert" Text="Insert" /> 
      &nbsp;<asp:LinkButton ID="InsertCancelButton" runat="server" 
       CausesValidation="False" CommandName="Cancel" Text="Cancel" /> 
     </InsertItemTemplate> 
     <ItemTemplate> 
      empid: 
      <asp:Label ID="empidLabel" runat="server" Text='<%# Eval("empid") %>' /> 
      <br /> 
      ename: 
      <asp:Label ID="enameLabel" runat="server" Text='<%# Bind("ename") %>' /> 
      <br /> 
      eadd: 
      <asp:Label ID="eaddLabel" runat="server" Text='<%# Bind("eadd") %>' /> 
      <br /> 
      esal: 
      <asp:Label ID="esalLabel" runat="server" Text='<%# Bind("esal") %>' /> 
      <br /> 
      edno: 
      <asp:Label ID="ednoLabel" runat="server" Text='<%# Bind("edno") %>' /> 
      <br /> 
      <asp:LinkButton ID="NewButton" runat="server" CausesValidation="False" 
       CommandName="New" Text="New" /> 
     </ItemTemplate> 
    </asp:FormView> 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="Data Source=gts7;Initial Catalog=dbemp14;Integrated Security=True;Pooling=False"    
     ProviderName="System.Data.SqlClient">   
    </asp:SqlDataSource> 

,並在代碼FormView.aspx頁的背後粘貼以下代碼:

FormView.aspx.cs

using System; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data; 
using System.Data.SqlClient; 
using System.Configuration; 

public partial class _Default : System.Web.UI.Page 
{ 
    SqlConnection con=new SqlConnection(ConfigurationManager.ConnectionStrings["cn"].ConnectionString); 

protected void Page_Load(object sender, EventArgs e) 
{ 

} 

protected void FormView1_ItemInserting(object sender, FormViewInsertEventArgs e) 
    { 
     string ename, eadd,insertqry; 
     Int32 esal, edno; 
     ename = ((TextBox)(FormView1.FindControl("txtename"))).Text; 
     eadd = ((TextBox)(FormView1.FindControl("txtename"))).Text; 
     esal = Convert.ToInt32(((TextBox)(FormView1.FindControl("txtesal"))).Text); 
     edno = Convert.ToInt32(((TextBox)(FormView1.FindControl("txtedno"))).Text); 

    insertqry="insert tbemployee(ename,eadd,esal,edno) values(@ename,@eadd,@esal,@edno)"; 

    if (con.State == ConnectionState.Closed) 
    { 
     con.Open(); 
    } 

    SqlCommand cmd = new SqlCommand(insertqry, con); 
    cmd.Parameters.Add("@ename", SqlDbType.VarChar, 50).Value = ename; 
    cmd.Parameters.Add("@eadd", SqlDbType.VarChar, 50).Value = eadd; 
    cmd.Parameters.Add("@esal", SqlDbType.Int).Value = esal; 
    cmd.Parameters.Add("@edno", SqlDbType.Int).Value = edno; 

    cmd.ExecuteNonQuery(); 
    cmd.Dispose(); 
    con.Close(); 

    FormView1.ChangeMode(FormViewMode.ReadOnly); 
    formbind(); 
} 

public void formbind() 
{ 
    if (FormView1.AllowPaging == true) 
    { 
     SqlDataAdapter adp = new SqlDataAdapter("select * from tbemployee", con); 
     DataSet ds = new DataSet(); 
     adp.Fill(ds); 

     Int32 totrecords = ds.Tables[0].Rows.Count; 
     Int32 currentpageindex = totrecords - 1; 
     FormView1.PageIndex = currentpageindex; 
     FormView1.DataSource = ds; 
     FormView1.DataBind(); 
    } 
    else 
    { 
     SqlDataAdapter adp = new SqlDataAdapter("select * from tbemployee where empid in (select isnull(max(empid),0) from tbemployee)", con); 
     DataSet ds = new DataSet(); 
     adp.Fill(ds); 
     FormView1.DataSource = ds; 
     FormView1.DataBind(); 
    } 
} 

protected void FormView1_ModeChanging(object sender, FormViewModeEventArgs e) 
{ 
    FormView1.ChangeMode(e.NewMode); 
    formbind(); 
} 
1

還有另一種解決方案是簡單得多恕我直言。

使用上面的(@ SK-INFOPOINT)數據,我會寫我的FormView1.aspx非常相似,只有一些小的更改默認爲「ReadOnly」模式,並將SQL插入和選擇命令放入SQLAdapter看起來像這樣:

FormView1.aspx

<asp:FormView ID="FormView1" runat="server" DataKeyNames="empid" 
    oniteminserting="FormView1_ItemInserting" DefaultMode="ReadOnly" 
    onmodechanging="FormView1_ModeChanging">    
    <InsertItemTemplate> 
     ename: 
     <asp:TextBox ID="txtename" runat="server" Text='<%# Bind("ename") %>' /> 
     <br /> 
     eadd: 
     <asp:TextBox ID="txteadd" runat="server" Text='<%# Bind("eadd") %>' /> 
     <br /> 
     esal: 
     <asp:TextBox ID="txtesal" runat="server" Text='<%# Bind("esal") %>' /> 
     <br /> 
     edno: 
     <asp:TextBox ID="txtedno" runat="server" Text='<%# Bind("edno") %>' /> 
     <br /> 
     <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" 
      CommandName="Insert" Text="Insert" /> 
     &nbsp;<asp:LinkButton ID="InsertCancelButton" runat="server" 
      CausesValidation="False" CommandName="Cancel" Text="Cancel" /> 
    </InsertItemTemplate> 
    <ItemTemplate> 
     empid: 
     <asp:Label ID="empidLabel" runat="server" Text='<%# Eval("empid") %>' /> 
     <br /> 
     ename: 
     <asp:Label ID="enameLabel" runat="server" Text='<%# Bind("ename") %>' /> 
     <br /> 
     eadd: 
     <asp:Label ID="eaddLabel" runat="server" Text='<%# Bind("eadd") %>' /> 
     <br /> 
     esal: 
     <asp:Label ID="esalLabel" runat="server" Text='<%# Bind("esal") %>' /> 
     <br /> 
     edno: 
     <asp:Label ID="ednoLabel" runat="server" Text='<%# Bind("edno") %>' /> 
     <br /> 
     <asp:LinkButton ID="NewButton" runat="server" CausesValidation="False" 
      CommandName="New" Text="New" /> 
    </ItemTemplate> 
</asp:FormView> 
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="Data Source=gts7;Initial Catalog=dbemp14;Integrated Security=True;Pooling=False"    
    ProviderName="System.Data.SqlClient" 
    SelectCommand="select * from tbemployee" 
    InsertCommand="insert into tbemployee (ename,eadd,esal,edno) values (@ename, @eadd, @esal, @edno)">   
</asp:SqlDataSource> 

這使得按鍵和模板來完成大部分的功能,而不需要手工編碼的插入和選擇。然後我想補充這只是在代碼下面的代碼的FormView.aspx頁面背後:

FormView.aspx.cs

using System; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data; 

public partial class _Default : System.Web.UI.Page 
{ 

    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void FormView1_ItemInserted(object sender, FormViewInsertedEventArgs e) 
    { 
     DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty); 
     FormView1.PageIndex = dv.Count - 1; 
    } 
} 

而你以只讀模式顯示您綁定的新項目。而且,如果你添加一個簡單的頁面模板,你的FormView控件,您可以導航向上和向下的記錄但是請你...

:)

- Schnizzles

相關問題