當愚蠢的方式奏效的時候,它就不是愚蠢的。——《美國士兵手冊》
作者前言:
在動态網頁(我是指伺服器腳本程式設計)純手工年代,工作量是大,但控制起來非常精确,我稱之為手術刀式程式設計。而今,在利潤支配技術的年代,一夜之間“軟體複用”“架構”“平台”“面向XX”雨後春筍……我并不反對城市擴張占用農田,也并不支援為了保護野生動物而放棄現代文明,我隻是不想發生這樣一幕:當一名程式員苦于實作一個功能的時候,怪罪于微軟沒有提供相應的控件,或者歸咎于網上沒有人貼出源代碼。要知道,世界上最貴的奢侈品大多是純手工制作。
這裡是一個頁面的codebehind代碼,獻醜了:
線上編輯.aspx.cs
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 GridView_線上編輯 : System.Web.UI.Page
{
/// <summary>
/// 建構資料源
/// 請根據自己的情況修改
/// </summary>
/// <returns></returns>
private DataTable InitTable()
{
DataTable dt = new DataTable("testtable");
DataColumn dc = new DataColumn("ID", typeof(String));
dt.Columns.Add(dc);
dc = new DataColumn("Sex", typeof(String));
DataRow dr = dt.NewRow();
dr["ID"] = "001";
dr["Sex"] = "0";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = "002";
dr["ID"] = "003";
dr["ID"] = "004";
return dt;
}
/// 資料綁定
private void BindDataa()
GridView1.DataSource = InitTable();
GridView1.DataBind();
protected void Page_Load(object sender, EventArgs e)
if (!this.IsPostBack)
{
GridView1.DataSource = InitTable();
GridView1.DataBind();
}
/// 編輯按鈕按下時
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btEdit_Click(object sender, EventArgs e)
Button rowbutton = sender as Button;
GridView1.EditIndex = Convert.ToInt32(rowbutton.CommandArgument);
BindDataa();
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
if (e.Row.RowType == DataControlRowType.DataRow)
if (e.Row.RowIndex != GridView1.EditIndex)
{
Button edit = e.Row.FindControl("btEdit") as Button;
edit.CommandArgument = e.Row.RowIndex.ToString();
}
else
DataRowView drv = e.Row.DataItem as DataRowView;
RadioButtonList sex = e.Row.FindControl("RadioButtonList1") as RadioButtonList;
sex.SelectedValue = drv["Sex"].ToString();
/// 取消按鈕按下時
protected void btCancel_Click(object sender, EventArgs e)
GridView1.EditIndex = -1;
/// 确定按鈕按下時
protected void btOK_Click(object sender, EventArgs e)
//主鍵擷取,GridView普通用法,在此不贅述
string key = GridView1.DataKeys[GridView1.EditIndex].Value.ToString();
//擷取使用者輸入
GridViewRow gvr = GridView1.Rows[GridView1.EditIndex];
TextBox userID = gvr.FindControl("tbID") as TextBox;
string id = userID.Text;
RadioButtonList userSex = gvr.FindControl("RadioButtonList1") as RadioButtonList;
string sex = userSex.SelectedValue;
//====在這裡做你想要做的事情,比如更新資料庫什麼的======
//恢複到浏覽狀态
}
線上編輯.aspx
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound" DataKeyNames="id">
<Columns>
<asp:TemplateField HeaderText="Operation">
<EditItemTemplate>
<asp:Button ID="btOK" runat="server" Text="OK" Width="55px" OnClick="btOK_Click" />
<asp:Button ID="btCancel" runat="server" Text="Cancel" OnClick="btCancel_Click" />
</EditItemTemplate>
<ItemTemplate>
<asp:Button ID="btEdit" runat="server" Text="Edit" Width="55px" OnClick="btEdit_Click" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ID">
<asp:TextBox ID="tbID" runat="server" Text='<%# Bind("ID") %>'></asp:TextBox>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("ID") %>'></asp:Label>
<asp:TemplateField HeaderText="Sex">
&nbsp;
<asp:RadioButtonList ID="RadioButtonList1" runat="server" RepeatDirection="Horizontal">
<asp:ListItem Value="0">Boy</asp:ListItem>
<asp:ListItem Value="1">Girl</asp:ListItem>
</asp:RadioButtonList>
<asp:Label ID="lSex" runat="server" Text='<%# Bind("sex") %>'></asp:Label>
</Columns>
</asp:GridView>
</div>
<asp:Button ID="Button1" runat="server" Text="Button" />
</form>
(完)
本文轉自 王傑瑞 51CTO部落格,原文連結:http://blog.51cto.com/wangjierui/47650,如需轉載請自行聯系原作者