zoukankan      html  css  js  c++  java
  • GridView, DataList and ListBox 行 单击与双击事件处理

    前台页面放置GridView,DataList和ListBox控件


    代码
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Admin_Default" %>

    <!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">
        
    <h2> GridView, DataList and ListBox单击与双击事件</h2>
        
    <div>        
            
    <asp:GridView ID="GridView1" runat="server" BackColor="White" BorderColor="#DEDFDE" 
                BorderStyle
    ="None" BorderWidth="1px" CellPadding="4" ForeColor="Black" GridLines="Vertical" 
                OnRowDataBound
    ="GridView1_RowDataBound" OnRowCommand="GridView1_RowCommand">
                
    <FooterStyle BackColor="#CCCC99" />
                
    <Columns>                
                    
    <asp:ButtonField Text="SingleClick" CommandName="SingleClick" Visible="false"/>
                    
    <asp:ButtonField Text="DoubleClick" CommandName="DoubleClick" Visible="false"/>
                
    </Columns>
                
    <RowStyle BackColor="#F7F7DE" />
                
    <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
                
    <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
                
    <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" />            
                
    <AlternatingRowStyle BackColor="White" />
            
    </asp:GridView>
            
    <br /><br />
            
    <asp:DataList ID="DataList1" runat="server" width="400px"
            OnItemCommand
    ="DataList1_ItemCommand" OnItemDataBound="DataList1_ItemDataBound">
                
    <HeaderTemplate>
                    任务列表
                
    </HeaderTemplate>
                
    <ItemTemplate>
                    
    <asp:LinkButton ID="LinkButton1" runat="server" Text="SingleClick" CommandName="SingleClick" Visible="false"/>
                    
    <asp:LinkButton ID="LinkButton2" runat="server" Text="DoubleClick" CommandName="DoubleClick" Visible="false"/>
                    
    <asp:Panel ID="Panel1" runat="server">
                        
    <span style="float:left;">
                            
    <b>编号: </b><%# Eval("Id"%>
                            
    &nbsp;&nbsp;<b>任务: </b><%# Eval("Task"%>
                        
    </span>
                        
    <span style="float:right;">
                            
    <b>是否完成: </b><%# Eval("IsDone"%>
                        
    </span>
                    
    </asp:Panel>
                
    </ItemTemplate> 
                
    <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />    
                
    <ItemStyle BackColor="#F7F7DE" BorderStyle="Solid" BorderColor="lightgray" BorderWidth="1px" />
                
    <AlternatingItemStyle BackColor="white" />
                
    <SelectedItemStyle BackColor="#CE5D5A" /> 
            
    </asp:DataList>
            
    <br /><br />
            
    <asp:ListBox ID="ListBox1" runat="server" DataTextField="Task" DataValueField="Id" OnSelectedIndexChanged="ListBox1_SelectedIndexChanged"></asp:ListBox>
            
    <br /><br />
            
    <asp:Label id="Message" runat="server" ForeColor="Red" Font-Bold="true"></asp:Label>        
         
    </div>
        
    </form>
    </body>
    </html>

    后台数据绑定与处理代码

    代码
    using System;
    using System.Data;
    using System.Configuration;
    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 Admin_Default : System.Web.UI.Page
    {
        
    #region Page Load

        
    protected void Page_Load(object sender, EventArgs e)
        {
            
    if (!IsPostBack)
            {
                
    this.GridView1.DataSource = GetData();
                
    this.GridView1.DataBind();

                
    this.DataList1.DataSource = GetData();
                
    this.DataList1.DataBind();

                
    this.ListBox1.DataSource = GetData();
                
    this.ListBox1.DataBind();
                SetupListBoxEvents(
    this.ListBox1);
            }
        }

        
    #endregion

        
    #region GridView1

        
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            
    if (e.Row.RowType == DataControlRowType.DataRow)
            {
                
    // Get the LinkButton control in the first cell
                LinkButton _singleClickButton = (LinkButton)e.Row.Cells[0].Controls[0];
                
    // Get the javascript which is assigned to this LinkButton
                string _jsSingle = ClientScript.GetPostBackClientHyperlink(_singleClickButton, "");
                
    // To prevent the first click from posting back immediately 
                
    // (therefore giving the user a chance to double click) pause the 
                
    // postback for 300 milliseconds by using setTimeout
                _jsSingle = _jsSingle.Insert(11"setTimeout(\"");
                _jsSingle += "\"300)";
                // Add this javascript to the onclick Attribute of the row
                e.Row.Attributes["onclick"= _jsSingle;

                
    // Get the LinkButton control in the second cell
                LinkButton _doubleClickButton = (LinkButton)e.Row.Cells[1].Controls[0];
                
    // Get the javascript which is assigned to this LinkButton
                string _jsDouble = ClientScript.GetPostBackClientHyperlink(_doubleClickButton, "");
                
    // Add this javascript to the ondblclick Attribute of the row
                e.Row.Attributes["ondblclick"= _jsDouble;
            }
        }

        
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            GridView _gridView 
    = (GridView)sender;

            
    // Get the selected index and the command name
            int _selectedIndex = int.Parse(e.CommandArgument.ToString());
            
    string _commandName = e.CommandName;

            
    switch (_commandName)
            {
                
    case ("SingleClick"):
                    _gridView.SelectedIndex 
    = _selectedIndex;
                    
    this.Message.Text += "Single clicked GridView row at index " + _selectedIndex.ToString() + "<br />";
                    
    break;
                
    case ("DoubleClick"):
                    
    this.Message.Text += "Double clicked GridView row at index " + _selectedIndex.ToString() + "<br />";
                    
    break;
            }
        }

        
    #endregion

        
    #region DataList1

        
    protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                
    // Get the first LinkButton control
                LinkButton _singleClickButton = (LinkButton)e.Item.Controls[1];
                
    // Get the javascript which is assigned to this LinkButton
                string _jsSingle = ClientScript.GetPostBackClientHyperlink(_singleClickButton, "");
                
    // To prevent the first click from posting back immediately 
                
    // (therefore giving the user a chance to double click) pause the 
                
    // postback for 300 milliseconds by using setTimeout
                _jsSingle = _jsSingle.Insert(11"setTimeout(\"");
                _jsSingle += "\"300)";
                // Get the panel wrapping the item
                Panel itemPanelSingle = (Panel)e.Item.Controls[5];
                
    // Add this javascript to the onclick Attribute of the panel
                itemPanelSingle.Attributes["onclick"= _jsSingle;

                
    // Get the second LinkButton control
                LinkButton _doubleClickButton = (LinkButton)e.Item.Controls[3];
                
    // Get the javascript which is assigned to this LinkButton
                string _jsDouble = ClientScript.GetPostBackClientHyperlink(_doubleClickButton, "");
                
    // Get the panel wrapping the item
                Panel _itemPanelDouble = (Panel)e.Item.Controls[5];
                
    // Add this javascript to the ondblclick Attribute of the panel
                _itemPanelDouble.Attributes["ondblclick"= _jsDouble;
            }
        }

        
    protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
        {
            DataList _dataList 
    = (DataList)source;

            
    // Get the selected index and the command name
            int _selectedIndex = e.Item.ItemIndex;
            
    string _commandName = e.CommandName;

            
    switch (_commandName)
            {
                
    case ("SingleClick"):
                    _dataList.SelectedIndex 
    = _selectedIndex;
                    
    this.Message.Text += "Single clicked DataList row at index " + _selectedIndex.ToString() + "<br />";
                    
    break;
                
    case ("DoubleClick"):
                    
    this.Message.Text += "Double clicked DataList row at index " + _selectedIndex.ToString() + "<br />";
                    
    break;
            }
        }

        
    #endregion

        
    #region ListBox1

        
    private void SetupListBoxEvents(ListBox listBox)
        {
            
    // Build the javascript for the single click
            string _jsSingle = "setTimeout(\"__doPostBack(\'" + listBox.UniqueID + "\',\'SingleClick\')\", 300)";
            
    // Add the javascript to the onclick Attribute of the ListBox
            listBox.Attributes["onclick"= _jsSingle;

            
    // Build the javascript for the double click
            string _jsDouble = "__doPostBack(\'" + listBox.UniqueID + "\',\'DoubleClick\')";
            
    // Add the javascript to the ondblclick Attribute of the ListBox
            listBox.Attributes["ondblclick"= _jsDouble;
        }

        
    protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            ListBox _listBox 
    = (ListBox)sender;

            
    // Get the selected index and the command name
            int _selectedIndex = _listBox.SelectedIndex;
            
    string _commandName = Request.Form["__EventArgument"].ToString();

            
    switch (_commandName)
            {
                
    case ("SingleClick"):
                    
    this.Message.Text += "Single clicked ListBox row at index " + _selectedIndex.ToString() + "<br />";
                    
    break;
                
    case ("DoubleClick"):
                    
    this.Message.Text += "Double clicked ListBox row at index " + _selectedIndex.ToString() + "<br />";
                    
    break;
            }
        }

        
    #endregion

        
    #region Render Override

        
    // Register the dynamically created client scripts
        protected override void Render(HtmlTextWriter writer)
        {
            
    // The client scripts for GridView1 were created in GridView1_RowDataBound
            foreach (GridViewRow r in GridView1.Rows)
            {
                
    if (r.RowType == DataControlRowType.DataRow)
                {
                    Page.ClientScript.RegisterForEventValidation(r.UniqueID 
    + "$ctl00");
                    Page.ClientScript.RegisterForEventValidation(r.UniqueID 
    + "$ctl01");
                }
            }

            
    // The client scripts for DataList1 were created in DataList1_ItemDataBound
            foreach (DataListItem i in DataList1.Items)
            {
                
    if (i.ItemType == ListItemType.Item
                    
    || i.ItemType == ListItemType.AlternatingItem
                    
    || i.ItemType == ListItemType.SelectedItem)
                {
                    Page.ClientScript.RegisterForEventValidation(i.UniqueID 
    + "$ctl00");
                    Page.ClientScript.RegisterForEventValidation(i.UniqueID 
    + "$ctl01");
                }
            }

            
    base.Render(writer);
        }

        
    #endregion

        
    #region GetData

        
    // Some data to bind to the Gridview and DataList
        private DataTable GetData()
        {
            DataTable dt 
    = new DataTable();

            dt.Columns.Add(
    new DataColumn("Id"typeof(int)));
            dt.Columns.Add(
    new DataColumn("Task"typeof(string)));
            dt.Columns.Add(
    new DataColumn("IsDone"typeof(bool)));

            dt.Rows.Add(
    new object[] { 0"Create a new project"true });
            dt.Rows.Add(
    new object[] { 1"Build a demo applcation"true });
            dt.Rows.Add(
    new object[] { 2"Test the demo applcation"true });
            dt.Rows.Add(
    new object[] { 3"Deploy the demo applcation"false });
            dt.Rows.Add(
    new object[] { 4"Support the demo applcation"false });

            
    return dt;
        }

        
    #endregion    
    }


  • 相关阅读:
    自定义swiper索引值的样式
    返回上一页面后页面后自动刷新(跨域也可)
    点击跳转到页面指定位置
    移动端输入框弹起影响布局(包括fixed布局情况)
    thinkPHP5模版页面volist循环offset使用
    Vue i18n国际化在实际项目中的使用
    前端Cookie、essionStorage、LocalStorage 的区别
    前端常用的一些浏览器对象
    前端取?后面的值
    前端下载文件重命名解决
  • 原文地址:https://www.cnblogs.com/chenqingwei/p/1750455.html
Copyright © 2011-2022 走看看