TemplateField.EditItemTemplate 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置模板,该模板用于显示 TemplateField 对象中处于编辑模式中的项。
public:
virtual property System::Web::UI::ITemplate ^ EditItemTemplate { System::Web::UI::ITemplate ^ get(); void set(System::Web::UI::ITemplate ^ value); };
[System.ComponentModel.Browsable(false)]
[System.Web.UI.PersistenceMode(System.Web.UI.PersistenceMode.InnerProperty)]
[System.Web.UI.TemplateContainer(typeof(System.Web.UI.IDataItemContainer), System.ComponentModel.BindingDirection.TwoWay)]
public virtual System.Web.UI.ITemplate EditItemTemplate { get; set; }
[<System.ComponentModel.Browsable(false)>]
[<System.Web.UI.PersistenceMode(System.Web.UI.PersistenceMode.InnerProperty)>]
[<System.Web.UI.TemplateContainer(typeof(System.Web.UI.IDataItemContainer), System.ComponentModel.BindingDirection.TwoWay)>]
member this.EditItemTemplate : System.Web.UI.ITemplate with get, set
Public Overridable Property EditItemTemplate As ITemplate
属性值
一个实现了 ITemplate 的对象,该对象包含用于显示 TemplateField 中处于编辑模式的项的模板。 默认值为 null
,指示未设置此属性。
- 属性
示例
下面的代码示例演示如何使用 EditItemTemplate 属性为控件的字段列中处于编辑模式 TemplateField 的 GridView 项创建自定义模板。 该模板包含验证服务器控件,以防止用户将值字段留空。
<%@ 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">
void AuthorsGridView_RowUpdating (Object sender, GridViewUpdateEventArgs e)
{
// The GridView control does not automatically extract updated values
// from TemplateField column fields. These values must be added manually
// to the NewValues dictionary.
// Get the GridViewRow object that represents the row being edited
// from the Rows collection of the GridView control.
int index = AuthorsGridView.EditIndex;
GridViewRow row = AuthorsGridView.Rows[index];
// Get the controls that contain the updated values. In this
// example, the updated values are contained in the TextBox
// controls declared in the edit item templates of each TemplateField
// column fields in the GridView control.
TextBox lastName = (TextBox)row.FindControl("LastNameTextBox");
TextBox firstName = (TextBox)row.FindControl("FirstNameTextBox");
// Add the updated values to the NewValues dictionary. Use the
// parameter names declared in the parameterized update query
// string for the key names.
e.NewValues["au_lname"] = lastName.Text;
e.NewValues["au_fname"] = firstName.Text;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>TemplateField EditItemTemplate Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>TemplateField EditItemTemplate Example</h3>
<!-- The GridView control automatically sets the columns -->
<!-- specified in the datakeynames attribute as read-only. -->
<!-- No input controls are rendered for these columns in -->
<!-- edit mode. -->
<asp:gridview id="AuthorsGridView"
datasourceid="AuthorsSqlDataSource"
autogeneratecolumns="false"
autogenerateeditbutton="true"
datakeynames="au_id"
cellpadding="10"
onrowupdating="AuthorsGridView_RowUpdating"
runat="server">
<columns>
<asp:boundfield datafield="au_id"
headertext="Author ID"
readonly="true"/>
<asp:templatefield headertext="Last Name"
itemstyle-verticalalign="Top">
<itemtemplate>
<%#Eval("au_lname")%>
</itemtemplate>
<edititemtemplate>
<asp:textbox id="LastNameTextBox"
text='<%#Eval("au_lname")%>'
width="90"
runat="server"/>
<br/>
<asp:requiredfieldvalidator id="LastNameRequiredValidator"
controltovalidate="LastNameTextBox"
display="Dynamic"
text="Please enter a last name."
runat="server" />
</edititemtemplate>
</asp:templatefield>
<asp:templatefield headertext="First Name"
itemstyle-verticalalign="Top">
<itemtemplate>
<%#Eval("au_fname")%>
</itemtemplate>
<edititemtemplate>
<asp:textbox id="FirstNameTextBox"
text='<%#Eval("au_fname")%>'
width="90"
runat="server"/>
<br/>
<asp:requiredfieldvalidator id="FirstNameRequiredValidator"
controltovalidate="FirstNameTextBox"
display="Dynamic"
text="Please enter a first name."
runat="server" />
</edititemtemplate>
</asp:templatefield>
<asp:checkboxfield datafield="contract"
headertext="Contract"
readonly="true"/>
</columns>
</asp:gridview>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the Pubs sample database. -->
<asp:sqldatasource id="AuthorsSqlDataSource"
selectcommand="SELECT [au_id], [au_lname], [au_fname], [contract] FROM [authors]"
updatecommand="UPDATE authors SET au_lname=@au_lname, au_fname=@au_fname WHERE (authors.au_id = @au_id)"
connectionstring="server=localhost;database=pubs;integrated security=SSPI"
runat="server">
</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">
Sub AuthorsGridView_RowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs)
' The GridView control does not automatically extract updated values
' from TemplateField column fields. These values must be added manually
' to the NewValues dictionary.
' Get the GridViewRow object that represents the row being edited
' from the Rows collection of the GridView control.
Dim index As Integer = AuthorsGridView.EditIndex
Dim row As GridViewRow = AuthorsGridView.Rows(index)
' Get the controls that contain the updated values. In this
' example, the updated values are contained in the TextBox
' controls declared in the edit item templates of each TemplateField
' column fields in the GridView control.
Dim lastName As TextBox = CType(row.FindControl("LastNameTextBox"), TextBox)
Dim firstName As TextBox = CType(row.FindControl("FirstNameTextBox"), TextBox)
' Add the updated values to the NewValues dictionary. Use the
' parameter names declared in the parameterized update query
' string for the key names.
e.NewValues("au_lname") = lastName.Text
e.NewValues("au_fname") = firstName.Text
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>TemplateField EditItemTemplate Example</title>
</head>
<body>
<form id="Form1" runat="server">
<h3>TemplateField EditItemTemplate Example</h3>
<!-- The GridView control automatically sets the columns -->
<!-- specified in the datakeynames attribute as read-only. -->
<!-- No input controls are rendered for these columns in -->
<!-- edit mode. -->
<asp:gridview id="AuthorsGridView"
datasourceid="AuthorsSqlDataSource"
autogeneratecolumns="false"
autogenerateeditbutton="true"
datakeynames="au_id"
cellpadding="10"
onrowupdating="AuthorsGridView_RowUpdating"
runat="server">
<columns>
<asp:boundfield datafield="au_id"
headertext="Author ID"
readonly="true"/>
<asp:templatefield headertext="Last Name"
itemstyle-verticalalign="Top">
<itemtemplate>
<%#Eval("au_lname")%>
</itemtemplate>
<edititemtemplate>
<asp:textbox id="LastNameTextBox"
text='<%#Eval("au_lname")%>'
width="90"
runat="server"/>
<br/>
<asp:requiredfieldvalidator id="LastNameRequiredValidator"
controltovalidate="LastNameTextBox"
display="Dynamic"
text="Please enter a last name."
runat="server" />
</edititemtemplate>
</asp:templatefield>
<asp:templatefield headertext="First Name"
itemstyle-verticalalign="Top">
<itemtemplate>
<%#Eval("au_fname")%>
</itemtemplate>
<edititemtemplate>
<asp:textbox id="FirstNameTextBox"
text='<%#Eval("au_fname")%>'
width="90"
runat="server"/>
<br/>
<asp:requiredfieldvalidator id="FirstNameRequiredValidator"
controltovalidate="FirstNameTextBox"
display="Dynamic"
text="Please enter a first name."
runat="server" />
</edititemtemplate>
</asp:templatefield>
<asp:checkboxfield datafield="contract"
headertext="Contract"
readonly="true"/>
</columns>
</asp:gridview>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the Pubs sample database. -->
<asp:sqldatasource id="AuthorsSqlDataSource"
selectcommand="SELECT [au_id], [au_lname], [au_fname], [contract] FROM [authors]"
updatecommand="UPDATE authors SET au_lname=@au_lname, au_fname=@au_fname WHERE (authors.au_id = @au_id)"
connectionstring="server=localhost;database=pubs;integrated security=SSPI"
runat="server">
</asp:sqldatasource>
</form>
</body>
</html>
注解
EditItemTemplate使用 属性可指定为 对象中TemplateField处于编辑模式的项显示的自定义内容。 通过创建一个模板来定义内容,该模板指定如何呈现处于编辑模式的项。 属性 EditItemTemplate 通常包含输入控件,供用户修改数据源中的值。
若要指定模板,请首先将开始标记和结束 <EditItemTemplate>
标记放在元素的 <TemplateField>
开始标记和结束标记之间。 接下来,在开始标记和结束 <EditItemTemplate>
标记之间添加自定义内容。 内容可以像纯文本一样简单,也可以是更复杂的 (在模板中嵌入其他控件,例如) 。
若要以编程方式访问模板中定义的控件,请先确定数据绑定控件中的哪个 TableCell 对象包含该控件。 接下来,使用 Controls 对象的 集合 TableCell 来访问控件。 如果控件指定了ID属性,则还可以使用 FindControl 对象的 方法来TableCell查找控件。