ListView.InsertNewItem(Boolean) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將目前的資料錄插入資料來源。
public:
virtual void InsertNewItem(bool causesValidation);
public virtual void InsertNewItem (bool causesValidation);
abstract member InsertNewItem : bool -> unit
override this.InsertNewItem : bool -> unit
Public Overridable Sub InsertNewItem (causesValidation As Boolean)
參數
- causesValidation
- Boolean
true
表示呼叫這個方法時執行頁面驗證,否則為 false
。
例外狀況
範例
下列範例示範如何使用 InsertNewItem 方法,以程序設計方式將控件的 ListView 插入專案內容插入數據源。
重要
這個範例有一個可接受使用者輸入的文字方塊,這可能會造成安全性威脅。 根據預設,ASP.NET Web 網頁會驗證使用者輸入未包含指令碼或 HTML 項目。 如需詳細資訊,請參閱 Script Exploits Overview (指令碼攻擊概觀)。
<%@ Page language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void InsertButton_Click(object sender, EventArgs e)
{
// Clears any existing message.
MessageLabel.Text = "";
// Use the InsertNewItem method to programmatically insert
// the current record in the ListView control.
DepartmentsListView.InsertNewItem(true);
}
protected void DepartmentsListView_ItemInserted(object sender,
ListViewInsertedEventArgs e)
{
// Handles exceptions that might occur
// during the insert operation.
if (e.Exception != null)
{
if (e.AffectedRows == 0)
{
e.KeepInInsertMode = true;
MessageLabel.Text = "An exception occurred inserting the new department. " +
"Please verify your values and try again.";
}
else
MessageLabel.Text = "An exception occurred inserting the new department. " +
"Please verify the values in the newly inserted item.";
e.ExceptionHandled = true;
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ListView InsertNewItem Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>ListView InsertNewItem Example</h3>
<h5>Departments</h5>
<asp:ListView ID="DepartmentsListView"
DataSourceID="DepartmentsDataSource"
DataKeyNames="DepartmentID"
InsertItemPosition="FirstItem"
OnItemInserted="DepartmentsListView_ItemInserted"
runat="server" >
<LayoutTemplate>
<table runat="server" id="tblDepartments" width="640px" border="1">
<tr runat="server" id="itemPlaceholder" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr runat="server">
<td>
<asp:Label ID="NameLabel" runat="Server" Text='<%#Eval("Name") %>' />
</td>
<td>
<asp:Label ID="GroupNameLabel" runat="Server" Text='<%#Eval("GroupName") %>' />
</td>
</tr>
</ItemTemplate>
<InsertItemTemplate>
<tr style="background-color:#00BFFF">
<td>
<asp:Label runat="server" ID="NameLabel" AssociatedControlID="NameTextBox"
Text="Name:" Font-Bold="true"/><br />
<asp:TextBox ID="NameTextBox" runat="server" Text='<%#Bind("Name") %>' />
</td>
<td>
<asp:Label runat="server" ID="GroupNameLabel" AssociatedControlID="GroupNameTextBox"
Text="Group Name:" Font-Bold="true" /><br />
<asp:TextBox ID="GroupNameTextBox" runat="server"
Text='<%#Bind("GroupName") %>' MaxLength="50" />
</td>
</tr>
</InsertItemTemplate>
</asp:ListView><br />
<asp:Label ID="MessageLabel"
ForeColor="Red"
runat="server" /> <br />
<asp:Button ID="InsertButton"
Text="Insert new record"
OnClick="InsertButton_Click"
runat="server" />
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the AdventureWorks sample database. Use an ASP.NET -->
<!-- expression to retrieve the connection string value -->
<!-- from the Web.config file. -->
<asp:SqlDataSource ID="DepartmentsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:AdventureWorks_DataConnectionString %>"
SelectCommand="SELECT DepartmentID, Name, GroupName FROM HumanResources.Department"
InsertCommand="INSERT INTO HumanResources.Department(Name, GroupName)
VALUES (@Name, @GroupName)">
</asp:SqlDataSource>
</form>
</body>
</html>
<%@ Page language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub InsertButton_Click(ByVal sender As Object, _
ByVal e As EventArgs)
' Clears any existing message.
MessageLabel.Text = ""
' Use the InsertNewItem method to programmatically insert
' the current record in the ListView control.
DepartmentsListView.InsertNewItem(True)
End Sub
Protected Sub DepartmentsListView_ItemInserted(ByVal sender As Object, _
ByVal e As ListViewInsertedEventArgs)
' Handles exceptions that might occur
' during the insert operation.
If Not (e.Exception Is Nothing) Then
If e.AffectedRows = 0 Then
e.KeepInInsertMode = True
MessageLabel.Text = "An exception occurred inserting the new department. " & _
"Please verify your values and try again."
Else
MessageLabel.Text = "An exception occurred inserting the new department. " & _
"Please verify the values in the newly inserted item."
End If
e.ExceptionHandled = True
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ListView InsertNewItem Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>ListView InsertNewItem Example</h3>
<h5>Departments</h5>
<asp:ListView ID="DepartmentsListView"
DataSourceID="DepartmentsDataSource"
DataKeyNames="DepartmentID"
InsertItemPosition="FirstItem"
OnItemInserted="DepartmentsListView_ItemInserted"
runat="server" >
<LayoutTemplate>
<table runat="server" id="tblDepartments" width="640px" border="1">
<tr runat="server" id="itemPlaceholder" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr runat="server">
<td>
<asp:Label ID="NameLabel" runat="Server" Text='<%#Eval("Name") %>' />
</td>
<td>
<asp:Label ID="GroupNameLabel" runat="Server" Text='<%#Eval("GroupName") %>' />
</td>
</tr>
</ItemTemplate>
<InsertItemTemplate>
<tr style="background-color:#00BFFF">
<td>
<asp:Label runat="server" ID="NameLabel" AssociatedControlID="NameTextBox"
Text="Name:" Font-Bold="true"/><br />
<asp:TextBox ID="NameTextBox" runat="server" Text='<%#Bind("Name") %>' />
</td>
<td>
<asp:Label runat="server" ID="GroupNameLabel" AssociatedControlID="GroupNameTextBox"
Text="Group Name:" Font-Bold="true" /><br />
<asp:TextBox ID="GroupNameTextBox" runat="server"
Text='<%#Bind("GroupName") %>' MaxLength="50" />
</td>
</tr>
</InsertItemTemplate>
</asp:ListView><br />
<asp:Label ID="MessageLabel"
ForeColor="Red"
runat="server" /> <br />
<asp:Button ID="InsertButton"
Text="Insert new record"
OnClick="InsertButton_Click"
runat="server" />
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the AdventureWorks sample database. Use an ASP.NET -->
<!-- expression to retrieve the connection string value -->
<!-- from the Web.config file. -->
<asp:SqlDataSource ID="DepartmentsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:AdventureWorks_DataConnectionString %>"
SelectCommand="SELECT DepartmentID, Name, GroupName FROM HumanResources.Department"
InsertCommand="INSERT INTO HumanResources.Department(Name, GroupName)
VALUES (@Name, @GroupName)">
</asp:SqlDataSource>
</form>
</body>
</html>
備註
InsertNewItem使用方法,以程序設計方式在數據源中插入專案。 這個方法通常用來從控件外部 ListView 插入專案,例如來自頁面上的不同控件。
若要使用 InsertNewItem 方法,您必須在 ListView 控件中定義InsertItemTemplate範本。 您也必須將 InsertItemPosition 屬性設定為與 不同的 InsertItemPosition.None值。 若要指定是否在插入作業之前執行頁面驗證,請使用 causesValidation
參數。
這個方法會 ItemInserted 引發和 ItemInserting 事件。