GridView中妙用LinkButton
生活随笔
收集整理的這篇文章主要介紹了
GridView中妙用LinkButton
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
說明:近來看到不少人想在DataGrid、GridView 使用比較靈活的方式來編輯、查看、刪除其中的數據選項(當然它們本身也內置了這些功能),卻苦于找不到比較好的辦法,本人結合實際代碼說明一下如何使用LinkButton來實現上述功能。 --------------------------------------------GridViewLinkButton.aspx-----------------------------------------
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewLinkButton.aspx.cs" Inherits="GridViewLinkButton" %> <!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>
</head>
<body>
??? <form id="form1" runat="server">
??? <div>
??????? <asp:GridView ID="gvPersonList" runat="server" AutoGenerateColumns="False">
??????????? <Columns>
??????????????? <asp:BoundField DataField="Id" HeaderText="編號" />
??????????????? <asp:BoundField DataField="Name" HeaderText="姓名" />
??????????????? <asp:TemplateField HeaderText="性別">
??????????????????? <ItemTemplate>
??????????????????????? <%# Eval("Sex").ToString()=="true"?"男":"女" %>
??????????????????? </ItemTemplate>
??????????????? </asp:TemplateField>
??????????????? <asp:BoundField DataField="Age" HeaderText="年齡" />
??????????????? <asp:TemplateField HeaderText="婚否">
??????????????????? <ItemTemplate>
??????????????????????? <%# Boolean.Parse(Eval("Married").ToString())==true?"是":"否" %>
??????????????????? </ItemTemplate>
??????????????? </asp:TemplateField>
??????????????? <asp:TemplateField HeaderText="婚否">
??????????????????? <ItemTemplate>
??????????????????????? <asp:LinkButton CommandArgument='<%# Eval("Id") %>' Enabled='<%# Boolean.Parse(Eval("Married").ToString())==true?false:true %>' Text="設為結婚" runat="server" OnCommand="SetMarried"></asp:LinkButton>
??????????????????? </ItemTemplate>
??????????????? </asp:TemplateField>
??????????? </Columns>
??????? </asp:GridView>
???
??? </div>
??? </form>
</body>
</html> --------------------------------------GridViewLinkButton.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 GridViewLinkButton : System.Web.UI.Page
{
??? private string firstName = "趙錢孫李周吳鄭王馮陳諸衛蔣沈韓楊朱秦尤許何呂施張孔曹嚴華";
??? private string lastName="猛勇剛強豹彪雁燕蓉菲";
??? protected void Page_Load(object sender, EventArgs e)
??? {
??????? if (!Page.IsPostBack)
??????? {
??????????? BindGridView();
??????? }
??? } private void BindGridView()
??? {
??????? DataTable myData = CreateDataTable();
??????? Session["MyData"] = myData;
??????? gvPersonList.DataSource = myData;
??????? gvPersonList.DataBind();
??? }
??? //手動生成DataTable
??? private DataTable CreateDataTable()
??? {
??????? DataTable data = new DataTable();
??????? DataColumn dcId = new DataColumn("ID", typeof(Int32));
??????? dcId.AutoIncrement = true;
??????? dcId.AutoIncrementSeed = 1;
??????? dcId.AutoIncrementStep = 1;
??????? data.Columns.Add(dcId);
??????? data.Columns.Add(new DataColumn("Name",typeof(string)));
??????? data.Columns.Add(new DataColumn("Age",typeof(int)));
??????? data.Columns.Add(new DataColumn("Sex",typeof(bool)));
??????? data.Columns.Add(new DataColumn("Married",typeof(bool)));
??????? DataRow dataRow = null;
??????? Random random = new Random();
??????? for (int i = 0; i < 20; i++)
??????? {
??????????? dataRow = data.NewRow();
??????????? //隨機生成姓名
??????????? dataRow["Name"] = firstName.Substring(random.Next(firstName.Length), 1) + lastName.Substring(random.Next(lastName.Length), 1);
??????????? //隨即生成介于20至100之間的年齡
??????????? int age = random.Next(20, 100);
??????????? dataRow["Age"] = age;
??????????? //隨即設置性別
??????????? bool sex = (random.Next(100) % 2 == 0) ? true : false;
??????????? dataRow["Sex"] = sex;
??????????? if (((sex == true) && (age >= 22)) || ((sex == false) && (age >= 20)))//男性結婚年齡大于22周歲,女性結婚年齡大于20周歲
??????????? {
??????????????? dataRow["Married"] = (random.Next(500) % 2 == 0) ? true : false;
??????????? }
??????????? else
??????????? {
??????????????? dataRow["Married"] = false;
??????????? }
??????????? data.Rows.Add(dataRow);
??????? }
??????? return data;
??? }
??? //LinkButton的OnCommand事件的處理方法
??? public void SetMarried(Object sender, CommandEventArgs e)
??? {
??????? e.CommandArgument.ToString();
??????? DataTable data = Session["MyData"] as DataTable;
??????? for (int i = 0; i < data.Rows.Count; i++)
??????? {
??????????? if (data.Rows[i]["Id"].ToString() == e.CommandArgument.ToString())
??????????? {
??????????????? data.Rows[i]["Married"] = true;
??????????????? break;
??????????? }
??????? }
??????? gvPersonList.DataSource = data;
??????? gvPersonList.DataBind();
??? }
} -----------------------------------運行結果----------------------------------------------------------------- 可以看見,一旦某個人是已婚,則不能再設置為已婚狀態了。
下圖是將某些未婚人士設置成已婚后的截圖。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewLinkButton.aspx.cs" Inherits="GridViewLinkButton" %> <!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>
</head>
<body>
??? <form id="form1" runat="server">
??? <div>
??????? <asp:GridView ID="gvPersonList" runat="server" AutoGenerateColumns="False">
??????????? <Columns>
??????????????? <asp:BoundField DataField="Id" HeaderText="編號" />
??????????????? <asp:BoundField DataField="Name" HeaderText="姓名" />
??????????????? <asp:TemplateField HeaderText="性別">
??????????????????? <ItemTemplate>
??????????????????????? <%# Eval("Sex").ToString()=="true"?"男":"女" %>
??????????????????? </ItemTemplate>
??????????????? </asp:TemplateField>
??????????????? <asp:BoundField DataField="Age" HeaderText="年齡" />
??????????????? <asp:TemplateField HeaderText="婚否">
??????????????????? <ItemTemplate>
??????????????????????? <%# Boolean.Parse(Eval("Married").ToString())==true?"是":"否" %>
??????????????????? </ItemTemplate>
??????????????? </asp:TemplateField>
??????????????? <asp:TemplateField HeaderText="婚否">
??????????????????? <ItemTemplate>
??????????????????????? <asp:LinkButton CommandArgument='<%# Eval("Id") %>' Enabled='<%# Boolean.Parse(Eval("Married").ToString())==true?false:true %>' Text="設為結婚" runat="server" OnCommand="SetMarried"></asp:LinkButton>
??????????????????? </ItemTemplate>
??????????????? </asp:TemplateField>
??????????? </Columns>
??????? </asp:GridView>
???
??? </div>
??? </form>
</body>
</html> --------------------------------------GridViewLinkButton.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 GridViewLinkButton : System.Web.UI.Page
{
??? private string firstName = "趙錢孫李周吳鄭王馮陳諸衛蔣沈韓楊朱秦尤許何呂施張孔曹嚴華";
??? private string lastName="猛勇剛強豹彪雁燕蓉菲";
??? protected void Page_Load(object sender, EventArgs e)
??? {
??????? if (!Page.IsPostBack)
??????? {
??????????? BindGridView();
??????? }
??? } private void BindGridView()
??? {
??????? DataTable myData = CreateDataTable();
??????? Session["MyData"] = myData;
??????? gvPersonList.DataSource = myData;
??????? gvPersonList.DataBind();
??? }
??? //手動生成DataTable
??? private DataTable CreateDataTable()
??? {
??????? DataTable data = new DataTable();
??????? DataColumn dcId = new DataColumn("ID", typeof(Int32));
??????? dcId.AutoIncrement = true;
??????? dcId.AutoIncrementSeed = 1;
??????? dcId.AutoIncrementStep = 1;
??????? data.Columns.Add(dcId);
??????? data.Columns.Add(new DataColumn("Name",typeof(string)));
??????? data.Columns.Add(new DataColumn("Age",typeof(int)));
??????? data.Columns.Add(new DataColumn("Sex",typeof(bool)));
??????? data.Columns.Add(new DataColumn("Married",typeof(bool)));
??????? DataRow dataRow = null;
??????? Random random = new Random();
??????? for (int i = 0; i < 20; i++)
??????? {
??????????? dataRow = data.NewRow();
??????????? //隨機生成姓名
??????????? dataRow["Name"] = firstName.Substring(random.Next(firstName.Length), 1) + lastName.Substring(random.Next(lastName.Length), 1);
??????????? //隨即生成介于20至100之間的年齡
??????????? int age = random.Next(20, 100);
??????????? dataRow["Age"] = age;
??????????? //隨即設置性別
??????????? bool sex = (random.Next(100) % 2 == 0) ? true : false;
??????????? dataRow["Sex"] = sex;
??????????? if (((sex == true) && (age >= 22)) || ((sex == false) && (age >= 20)))//男性結婚年齡大于22周歲,女性結婚年齡大于20周歲
??????????? {
??????????????? dataRow["Married"] = (random.Next(500) % 2 == 0) ? true : false;
??????????? }
??????????? else
??????????? {
??????????????? dataRow["Married"] = false;
??????????? }
??????????? data.Rows.Add(dataRow);
??????? }
??????? return data;
??? }
??? //LinkButton的OnCommand事件的處理方法
??? public void SetMarried(Object sender, CommandEventArgs e)
??? {
??????? e.CommandArgument.ToString();
??????? DataTable data = Session["MyData"] as DataTable;
??????? for (int i = 0; i < data.Rows.Count; i++)
??????? {
??????????? if (data.Rows[i]["Id"].ToString() == e.CommandArgument.ToString())
??????????? {
??????????????? data.Rows[i]["Married"] = true;
??????????????? break;
??????????? }
??????? }
??????? gvPersonList.DataSource = data;
??????? gvPersonList.DataBind();
??? }
} -----------------------------------運行結果----------------------------------------------------------------- 可以看見,一旦某個人是已婚,則不能再設置為已婚狀態了。
下圖是將某些未婚人士設置成已婚后的截圖。
總結
以上是生活随笔為你收集整理的GridView中妙用LinkButton的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1582年日历怎么了_【知乎周边】知乎2
- 下一篇: 智能安全实验室-Defendio杀马2.