Có thể lấy FormView tự động mặc định sang chế độ ReadOnly trên bản ghi mà nó vừa chèn thông qua InsertItemTemplate của nó không? Có vẻ như điều này sẽ hơi mơ hồ nên tự nhiên đến với một FormView.Tự động liên kết ASP.NET FormView với bản ghi mới được chèn
Trả lời
Có, có thể.
Tôi đang chứng tỏ nó với các bảng Employee
Sử dụng các kịch bản SQL Server sau đây để tạo ra nhân viên thảo luận từ tên 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
Các mã nguồn cho Chèn kỷ lục vào FormView được hiển thị dưới đây:
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" />
<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>
và trong Bộ luật Đằng sau của trang FormView.aspx dán đoạn mã sau:
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();
}
Có một giải pháp đó là IMHO đơn giản hơn nhiều.
Sử dụng dữ liệu ở trên (@ SK-INFOPOINT), tôi sẽ viết FormView1.aspx của tôi rất giống với chỉ một vài thay đổi nhỏ để mặc định thành chế độ "ReadOnly" và đưa các lệnh Chèn và chọn SQL vào SQLAdapter trông như thế này:
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" />
<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>
Điều này cho phép các nút và các mẫu để làm hầu hết các chức năng mà không cần phải bằng tay mã chèn và chọn. Sau đó, tôi sẽ thêm chỉ này trong Bộ luật Đằng sau của trang FormView.aspx đoạn mã sau:
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;
}
}
Và bạn đang hiển thị mục mới ràng buộc của bạn trong chế độ ReadOnly. Và, nếu bạn thêm một mẫu phân trang đơn giản để FormView, bạn có thể di chuyển lên và xuống các hồ sơ tuy nhiên bạn vui lòng ...
:)
- Schnizzles
- 1. Làm thế nào để liên kết một FormView ASP.NET với một bản ghi duy nhất?
- 2. PHP mySQL - Chèn bản ghi mới vào bảng với tự động tăng trên khóa chính
- 3. vb.net linq Chèn bản ghi mới
- 4. Bản ghi được liên kết với bất kỳ bảng nào?
- 5. Chèn bản ghi MySQL từ nhiều bảng vào bảng mới
- 6. Có phải số mới được tạo tự động của Delphi XE2 được liên kết với 1.1.2000 00:00:00 không?
- 7. cách gọi trình tự trong khi chèn bản ghi mới vào bảng postgresql?
- 8. cách nút radio hoạt động với liên kết asp.net mvc
- 9. Oracle - Chèn hàng mới có ID gia tăng tự động
- 10. Lưu một bản ghi hoạt động, theo thứ tự các đối tượng liên kết được lưu là gì?
- 11. Cách tự tham gia bảng theo cách mọi bản ghi được kết hợp với bản ghi "trước đó"?
- 12. Cách mở liên kết WebView với hoạt động mới?
- 13. Chèn nhiều bản ghi với một câu lệnh chèn
- 14. Tự động liên kết dữ liệu với danh sách thả xuống trong asp.net mvc
- 15. lấy ID bản ghi SQL mới
- 16. Tự động tạo liên kết Javascript
- 17. làm cách nào tôi có thể nhận id cuối cùng được chèn vào trong formview
- 18. Liên kết Hypermedia với API mới Servicestack
- 19. liên kết động với LLVM
- 20. Chèn liên kết tương đối trong reStructuredText
- 21. Liên kết iPad Liên kết ghi đè CSS
- 22. C + 11 Vùng chứa liên kết giữ thứ tự chèn?
- 23. PG :: Lỗi: LRI: giá trị null trong cột "created_at" khi chèn bản ghi vào mô hình được liên kết
- 24. Ghi đè đối tượng ghi đè với các liên kết
- 25. Vấn đề với chèn/cập nhật liên kết với tinyMCE
- 26. Tự động tạo và "nhấp" liên kết với jQuery
- 27. Làm cách nào để tìm hồ sơ thiếu các bản ghi liên quan trong has_many thông qua liên kết với Bản ghi Hoạt động?
- 28. Tìm hoặc tạo bản ghi thông qua liên kết factory_girl
- 29. Chèn khóa chính được tăng tự động vào bảng Access
- 30. Chèn liên kết vào văn bản in đậm trong reStructuredText