62,046
社区成员
发帖
与我相关
我的任务
分享
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="SystemManagement_SmartForms_Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>TemplateField</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id"
DataSourceID="SqlDataSource1" OnRowCommand="GridView1_RowCommand">
</asp:GridView>
<asp:Button ID="Button1" runat="server" Text="Button" />
</div>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:default %>"
ProviderName="<%$ ConnectionStrings:default.ProviderName %>" SelectCommand="SELECT [id], [name] FROM [SmartFormsTest]"></asp:SqlDataSource>
</form>
</body>
</html>
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class SystemManagement_SmartForms_Default2 : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
}
protected override void OnInit(EventArgs e) {
if (!IsPostBack) {
//宣告TemplateField
TemplateField customField;
//產生一個新的TemplateField
customField = new TemplateField();
//設定TemplateField的Header
customField.HeaderTemplate = new GridViewTemplate(DataControlRowType.Header, "編號");
//設定TemplateField的Data
customField.ItemTemplate = new GridViewTemplate(DataControlRowType.DataRow, "id");
//加入TemplateField到GridView
this.GridView1.Columns.Add(customField);
customField = new TemplateField();
customField.HeaderTemplate = new GridViewTemplate(DataControlRowType.Header, "名稱");
customField.ItemTemplate = new GridViewTemplate(DataControlRowType.DataRow, "name");
this.GridView1.Columns.Add(customField);
}
base.OnInit(e);
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) {
string commandString = string.Empty;
if (e.CommandName == "DeleteCommand") {
commandString = "删除";
}
this.Page.ClientScript.RegisterStartupScript(Page.GetType(), "alert", "alert('" + "这是得到的Command" + commandString + "')", true);
}
}
public class GridViewTemplate : ITemplate {
private DataControlRowType templateType;
private string columnName;
public GridViewTemplate(DataControlRowType type, string colname) {
templateType = type;
columnName = colname;
}
public void InstantiateIn(System.Web.UI.Control container) {
switch (templateType) {
case DataControlRowType.Header:
Literal lc = new Literal();
lc.Text = "<B>" + columnName + "</B>";
container.Controls.Add(lc);
break;
case DataControlRowType.DataRow:
Button data = new Button();
data.Text = "click me";
data.CommandName = "DeleteCommand";
data.DataBinding += new EventHandler(data_DataBinding);
container.Controls.Add(data);
break;
default:
break;
}
}
private void data_DataBinding(object sender, EventArgs e) {
Button l = (Button)sender;
GridViewRow row = (GridViewRow)l.NamingContainer;
l.Text = DataBinder.Eval(row.DataItem, columnName).ToString();
}
}