HyperLinkField和ButtonField
<%@ 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[] { "c1" };
GridView1.DataBind();
}
private DataTable CreateDataSource()
{
DataTable dt = new DataTable();
dt.Columns.Add("c1", typeof(int));
dt.Columns.Add("c2", typeof(string));
dt.Columns.Add("c3", typeof(string));
for (int i = 1; i <= 100; i++)
{
DataRow dr = dt.NewRow();
dr[0] = i;
dr[1] = i * 10;
dr[2] = i * 100;
dt.Rows.Add(dr);
}
return dt;
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
this.Bind();
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "select")
{
int i = Convert.ToInt32(e.CommandArgument);
TextBox1.Text = GridView1.Rows[i].Cells[2].Text.ToString();
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" AllowPaging="True"
OnRowCommand="GridView1_RowCommand" OnPageIndexChanging="GridView1_PageIndexChanging">
<Columns>
<asp:ButtonField CommandName="select" HeaderText="一般按钮" Text="选择" ButtonType="Button"
DataTextField="c1" DataTextFormatString="选择:{0}"></asp:ButtonField>
<asp:HyperLinkField HeaderText="链接按钮" Text="选择" DataTextField="c1" DataTextFormatString="选择:{0}"
DataNavigateUrlFields="c1" DataNavigateUrlFormatString="~/page.aspx?id={0}">
</asp:HyperLinkField>
<asp:BoundField DataField="c1" HeaderText="列1" />
<asp:BoundField DataField="c2" HeaderText="列2" />
<asp:BoundField DataField="c3" HeaderText="列3" />
</Columns>
</asp:GridView>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</form>
</body>
</html>
说明
针对ButtonField
(1) 创建两个事件OnPageIndexChanging 和 OnRowCommand;
(2) GridView控件的第一列是Button自定义控件,CommandName="select"命令名为选择,ButtonType="Button"按钮类型为按钮,此外还有 LinkButton 和 ImageButton 类型,DataTextField="empno" 和DataTextFormatString="选择:{0}" 设置绑定的字段和显示格式;
(3) Convert.ToInt32(e.CommandArgument) 获得行号。
针对HyperLinkField
(1) 设置 DataNavigateUrlFields="c1"和DataNavigateUrlFormatString="~/page.aspx?id={0}",将编号作为参数,传给page.aspx页面。