Hopes

          Start Here..

           

          GridView中妙用LinkButton

          GridView中妙用LinkButton

          分類: asp.net
          2007-06-13 18:58 2167人閱讀 評論(2) 收藏 舉報

          說明:近來看到不少人想在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();
          }
          }

          -----------------------------------運行結果-----------------------------------------------------------------

          可以看見,一旦某個人是已婚,則不能再設置為已婚狀態了。
          下圖是將某些未婚人士設置成已婚后的截圖。

          posted on 2012-09-27 22:24 ** 閱讀(171) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          公告

          你好!

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章分類

          文章檔案

          新聞檔案

          相冊

          收藏夾

          C#學習

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 德兴市| 会同县| 宜都市| 尚志市| 万源市| 雅江县| 桂阳县| 若羌县| 荣昌县| 巴马| 邵阳县| 屏南县| 开封县| 吉木萨尔县| 泗水县| 扎兰屯市| 普安县| 读书| 汪清县| 抚顺县| 临汾市| 社会| 砀山县| 塔河县| 峨边| 新竹市| 伊宁县| 义马市| 怀柔区| 昌平区| 梁平县| 定陶县| 如皋市| 治多县| 吉安市| 加查县| 磐石市| 东乌珠穆沁旗| 鄂尔多斯市| 屏南县| 邯郸市|