模板列TemplateField
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Web.UI" %>
<!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></title>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.Bind();
}
}
private void Bind()
{
DataTable dt = this.CreateDataSource();
GridView1.DataSource = dt;
GridView1.DataKeyNames = new string[] { "id" };
GridView1.DataBind();
}
private DataTable CreateDataSource()
{
DataTable dt = new DataTable("info");
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("name", typeof(string));
dt.Columns.Add("sex", typeof(int));
dt.Columns.Add("edu", typeof(int));
for (int i = 1; i <= 100; i++)
{
DataRow dr = dt.NewRow();
dr[0] = 1000 + i;
dr[1] = "名字" + i;
dr[2] = (i % 2).ToString();
dr[3] = ((i % 3) + 1).ToString();
dt.Rows.Add(dr);
}
return dt;
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
Bind();
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
Bind();
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string sqlStr = "DELETE FROM info WHERE id=':vId'";
string id = GridView1.DataKeys[e.RowIndex].Values[0].ToString();
sqlStr = sqlStr.Replace(":vId", id);
// 执行数据库删除
this.TextBox1.Text = "已执行删除.";
Bind();
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string sqlStr = "update info set sex=':vSex',name=':vName',edu=':vEdu' where id=:vId'";
string id = GridView1.DataKeys[e.RowIndex].Values[0].ToString();
string name = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txt_name")).Text.ToString().Trim();
string sex = ((RadioButtonList)GridView1.Rows[e.RowIndex].FindControl("rbl_sex")).SelectedValue.Trim();
string edu = ((DropDownList)GridView1.Rows[e.RowIndex].FindControl("ddl_edu")).SelectedItem.Text.ToString();
sqlStr = sqlStr.Replace(":vSex",sex).Replace(":vName",name).Replace(":vEdu", edu).Replace(":vId", id);
// 执行数据库更新
GridView1.EditIndex = -1;
Bind();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
this.Bind();
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Label lbl = ((Label)e.Row.FindControl("lbl_edu"));
if (lbl != null)
{
switch (lbl.Text)
{
case "1":
lbl.Text = "学士";
break;
case "2":
lbl.Text = "硕士";
break;
case "3":
lbl.Text = "博士";
break;
}
}
lbl = ((Label)e.Row.FindControl("lbl_sex"));
if (lbl != null)
{
switch (lbl.Text)
{
case "1":
lbl.Text = "男";
break;
case "0":
lbl.Text = "女";
break;
}
}
DropDownList ddl = (DropDownList)e.Row.FindControl("ddl_edu");
if (ddl != null)
{
ddl.Items.Clear();
ddl.Items.Add(new ListItem("学士", "1"));
ddl.Items.Add(new ListItem("硕士", "2"));
ddl.Items.Add(new ListItem("博士", "3"));
}
RadioButtonList rbl = (RadioButtonList)e.Row.FindControl("rbl_sex");
if (rbl != null)
{
rbl.Items.Clear();
rbl.Items.Add(new ListItem("男", "1"));
rbl.Items.Add(new ListItem("女", "0"));
string selectedValue = rbl.DataValueField.ToString();
switch (selectedValue)
{
case "1":
rbl.Items[0].Selected = true;
break;
case "0":
rbl.Items[1].Selected = true;
break;
}
}
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" AllowPaging="true"
OnPageIndexChanging="GridView1_PageIndexChanging" OnRowDataBound="GridView1_RowDataBound"
OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowDeleting="GridView1_RowDeleting"
OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating">
<Columns>
<asp:TemplateField HeaderText="编号">
<ItemTemplate>
<%# this.GridView1.PageIndex * this.GridView1.PageSize + this.GridView1.Rows.Count + 1%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="学号">
<ItemTemplate>
<asp:Label ID="lbl_id" runat="server" Text='<%# Bind("id")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txt_id" runat="server" Text='<%# Bind("id")%>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="名字">
<ItemTemplate>
<asp:Label ID="lbl_name" runat="server" Text='<%# Bind("name")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txt_name" runat="server" Text='<%# Bind("name")%>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="性别">
<ItemTemplate>
<asp:Label ID="lbl_sex" runat="server" Text='<%# Bind("sex")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:RadioButtonList ID="rbl_sex" runat="server" DataValueField='<%# Bind("sex")%>'>
</asp:RadioButtonList>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="学历">
<ItemTemplate>
<asp:Label ID="lbl_edu" runat="server" Text='<%# Bind("edu")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddl_edu" runat="server" DataValueField='<%# Bind("edu")%>'>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="操作" ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Edit"
Text="编辑" OnClientClick="return confirm('确认要编辑吗?');">
</asp:LinkButton>
<asp:LinkButton ID="LinkButton3" runat="server" CausesValidation="False" CommandName="Delete"
Text="删除" OnClientClick="return confirm('确认要删除吗?');">
</asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Select"
Text="选择"></asp:LinkButton>
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" CommandName="Update"
Text="更新"></asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Cancel"
Text="取消"></asp:LinkButton>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</form>
</body>
</html>

本文详细介绍了ASP.NET中GridView控件结合模板列(TemplateField)的应用实践,包括数据绑定、分页、编辑、删除等功能实现。通过具体示例展示了如何自定义列内容以及在编辑模式下使用不同控件进行数据输入。
434

被折叠的 条评论
为什么被折叠?



