页面有100个button,一个listbox

tt84173857tt 2012-11-18 06:12:10
100个button代码一样,点击了的buttonid显示在listbox内。

每行10个,最多只能选择5个,并且要同一行相邻的5个。

怎么控制着100个相同代码的button点击事件。
...全文
180 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2012-11-18
  • 打赏
  • 举报
回复
页面代码:
<%@ Page Language="C#" AutoEventWireup="true" ViewStateEncryptionMode="Always" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<!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 id="divLeftListBox" style="width:20%;float:left;" >
        <asp:ListBox ID="ListBox1" Width="100%" Height="300px" runat="server" 
            AutoPostBack="True"></asp:ListBox>
    </div>
    <div id="divRightButtons" style="width:80%;float:left;" runat="server" >
    </div>
    </form>
</body>
</html>
页面后置文件:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        BuildButtons();
    }

    private void BuildButtons()
    {
        Table table1 = new Table();
        for (int i = 1; i <= 10; i++) 
        {
            TableRow tr = new TableRow();
            for (int j = 1; j <= 10; j++)
            {
                TableCell td = new TableCell();
                Button btn = new Button();
                btn.ID = "btn" + SetButtonNum( i, j);
                btn.Text = btn.ID;
                btn.TabIndex =(short) ( (i - 1) * 10 + j );
                btn.Click += Button_Public_Click;

                td.Controls.Add(btn);
                tr.Controls.Add(td);
            }
            table1.Controls.Add(tr);
        }

        divRightButtons.Controls.Add(table1);
    }

    

    private string SetButtonNum(int i, int j) 
    {
        int num = (i - 1) * 10 + j;
        if (num < 10)
            return "00" + num.ToString();
        if (num < 100)
            return "0" + num.ToString();
        return num.ToString();
    }

    protected void Button_Public_Click(object sender, EventArgs e)
    {
        //点击了的buttonid显示在listbox内。
        Button btn = (Button) sender;
        string btnID = btn.ID;
        int btnNum =Convert.ToInt32( btnID.Substring(3) );
        int sameRowMin = Convert.ToInt32(btnID.Substring(3,2)+"1");
        int sameRowMax = sameRowMin + 9;
        //每行10个,最多只能选择5个,并且要同一行相邻的5个。
        //同一行的选中按钮集合
        List<string> listSameRowBtnID = new List<string>();
        List<int> listSameRowNum = new List<int>();
        //所有的选中按钮
        List<string> listAllBtnID = new List<string>();
        foreach (ListItem li in ListBox1.Items) 
        {
            listAllBtnID.Add(li.Text);

            int btnNum2 = Convert.ToInt32(li.Text.Substring(3));
            if (btnNum2 >= sameRowMin && btnNum2 <= sameRowMax && li.Text != btnID)
            {
                listSameRowBtnID.Add(li.Text);
                listSameRowNum.Add(btnNum2);
            }
        }

        if (listAllBtnID.Contains(btnID))
        {
            Response.Write("已经加入了此按钮,不能重复加入!");
        }
        else if (listSameRowBtnID.Count >= 5)
        {
            Response.Write("此行已加入了5个,不能再加入!");
        }
        else if (listSameRowBtnID.Count > 0 && btnNum != listSameRowNum[0]-1 &&  btnNum != listSameRowNum[listSameRowNum.Count-1]+1 )
        {
            Response.Write("每一行中的按钮在添加时,必须是紧邻的!");
        }
        else 
        {
            ListBox1.Items.Add(new ListItem(btnID));
        }
    }
}
你新建一个页面,把上面的代码复制过去就可以运行了。 基本功能已完全实现。 有些小细节你可以自己加代码去完善。
mai970376230 2012-11-18
  • 打赏
  • 举报
回复
这种选择个数的限定 用JS可以实现的
catmax 2012-11-18
  • 打赏
  • 举报
回复
用委托啊,委托可以的
Jia_H 2012-11-18
  • 打赏
  • 举报
回复
使用同一个事件处理方法就好了。类似这样的东西:

void DoButtonClick(object sender, EventArgs e)
{
    Button btn = (Button) sender;

    // process with button
    Trace.WriteLine(btn.ID);
}

// in pageload or ...
button1.Click += DoButtonClick;
button2.Click += DoButtonClick;
...
button100.Click += DoButtonClick;

// or set in page
asp:Button id="Button1" OnClick="DoButtonClick"  runat="server"/>
...
asp:Button id="Button100" OnClick="DoButtonClick"  runat="server"/>
2023/6/4 ASP.NETWeb服务器控件 ASP全文共74页,当前为第1页。 ASP.NET提供的Web效力器控件简化了Web运用顺序的设计进程。 Windows控件的属性、方法、事情都是在本机上执行的; Web效力器控件的属性、方法、事情那么全部是在效力器端执行的。 在Web运用顺序中,用户经过客户端阅读器操作Web页面时,对Web效力器控件的每个央求都要发送到效力器端,效力器中止处置后,再将处置结果转换为客户端脚本发送到客户端显示。 由于客户端的每个央求都要经过网络发送到效力器处置,会对网络传输带来很大的担负。 Windows控件与Web效劳器控件的主要区别 ASP全文共74页,当前为第2页。 14.1 规范控件 14.1.1 复杂控件 Button、TextBox、CheckBox CheckBoxList、RadioButton RadioButtonList、ListBox DropDownList 14.1.2 Table控件 14.1.3 HiddenField控件 ASP全文共74页,当前为第3页。 14.1.1 复杂控件 Button控件 有三种类型的按钮控件: Button控件:与Windows窗体的Button控件用法相反。 LinkButton控件:外观与Hyperlink控件相反,但在功用上与Button控件完全相反。 ImageButton控件:经过属性[ImageUrl]指定显示在按钮的图片。 三种类型的按钮在鼠标单击时都可以将窗体提交给效力器,并触发效力器端对应的Click事情,然后在效力器端执行相应的事情代码。 ASP全文共74页,当前为第4页。 TextBox控件 TextBox控件用于在Web页面中接纳如入的文本内容。 1. 常用的基本属性 1) AutoPostBack属性:决议控件中文本修正后,能否自动回发到效力器。该属性默许值为false,即修注释本后并不立刻回发到效力器,而是等窗体被提交后一并处置。 2) TextMode属性:用于设置文本框接受文本的行为方式。共有三种属性值:MultiLine〔多行输入方式〕;Password〔密码输入方式〕;SingleLine〔单行输入方式〕。默许状况下,该属性为SingleLine。 2. 常用的事情 TextChanged事情:文本框的内容发作更改招致窗体回发效力器时触发。 留意,能否触发该事情与AutoPostBack属性有关。 ASP全文共74页,当前为第5页。 CheckBox控件与CheckBoxList控件  CheckBox控件:向用户提供一组可选项。 CheckBoxList控件:向用户提供一组选项,也叫复选框。在运转时静态的决议有哪些选项时,运用CheckBoxList控件比拟方便。 ASP全文共74页,当前为第6页。 CheckBox控件与CheckBoxList控件〔续〕 1. CheckBox控件的常用基本属性 AutoPostBack属性:决议CheckBox控件外形更改后能否自动回发到效力器处置。该属性默许值为false。 2. CheckBoxList控件的常用基本属性 1) Items属性:表示控件对象中一切项的集合。 2) RepeatColumns属性:指示控件中显示CheckBox项的列数。 3) RepeatDirection属性:决议控件中各CheckBox项的显示方法。默许值是Vertical。该属性值还可以修正为Horizontal,使各项按水平方式陈列显示。 3. CheckBoxList控件的常用基身手情 CheckedIndexChanged事情:更改CheckBoxList控件中的选项,回发效力器时触发。 ASP全文共74页,当前为第7页。 RadioButton控件与RadioButtonList控件 RadioButton效力器控件与Windows控件的区别: 在Windows窗体中,在同一容器中的一切RadioButton控件都默以为同一组,只能在这些控件中中止单项选择; Web窗体中,默许状况下会将同一容器中的一切RadioButton效力器控件作为不同组,可以多项选择。假定希望将其作为一组,需求设置RadioButton 的GroupName属性。 ASP全文共74页,当前为第8页。 RadioButton控件与RadioButtonList控件〔续〕 RadioButton控件的GroupName属性:运用该属性指定一个单项选择按钮组,以创立一组互斥的控件。 RadioButtonList效力器控件是封装了一组单项选择按钮控件的列表控件。其主要的属性、事情与CheckBoxList效力器控件相反。 ASP全文共74页,当前为第9页。 ListBox控件 ListBox
第1章 空 第2章 ASP.NET运行模型 21.如何在页面中应用javascript脚本-示例1 21.如何在页面中应用javascript脚本-示例2 22.如何实现从服务器端向页面动态添加javascript脚本-示例1 22.如何实现从服务器端向页面动态添加javascript脚本-示例2 24.如何处理多页面重定向到同一页面后的返回问题 25.如何用Response.Redirect方法传递汉字 29.如何利用输出缓存技术缓存整个页面 30.如何利用片段缓存技术对用户控件进行缓存 31.如何利用数据缓存技术提高程序的性能 33.如何实现当页面产生错误时重定向到自定义错误界面 35.如何在程序中读写Web.config文件 37.如何使用CSS文件定义控件的样式 38.如何启用和禁用ViewState保存状态信息的功能 39.如何应用IsPostBack控制页面的加载 41.如何使用Trace对象进行跟踪调试(页面级) 42.如何使用#Include语法将文件添加到页面 43.如何使用编程的方式处理异常信息 44.如何将网页错误信息写入事件日志 第3章 常用Web服务控件 46.如何使用Label控件动态显示文本信息 47.如何实现当鼠标移到控件时显示提示信息 48.如何在Web应用程序中实现快捷键功能(使用脚本实现) 48.如何在Web应用程序中实现快捷键功能(使用属性实现) 49.如何设置页面上控件的Tab键顺序 50.如何实现用回车键代替Tab键的功能 51.如何为按钮键添加消息框 52.Button、LinkButton和ImageButton服务控件的区别及应用 54.如何使用CheckBox和CheckBoxList控件(CheckBox示例) 54.如何使用CheckBox和CheckBoxList控件(CheckBoxList示例) 55.如何使用RadioButton和RadioButtonList控件(RadioButton示例) 55.如何使用RadioButton和RadioButtonList控件RadioButtonList示例) 56.如何使用Panel控件操作一组控件 57.如何使用Table控件组织页面的内容 58.如何实现DropDownList控件选项的添加、删除等操作 59.如何实现间接改变DropDownList控件的当前选项 60.如何实现两个或多个DropDownList控件的联动 61.如何实现ListBox控件选项的上移、下移、添加和删除操作 62.如何实现ListBox控件中选项的双击事件 63.如何动态设置ListBox控件中各选项的背景颜色 64.如何在页面中动态创建控件 65.如何为HTML服务器控件的事件添加自定义方法 第4章 验证控件 67.如何使用RequiredFieldValidator控件验证用户是否输入信息 68.如何使用RegularExpressionValidator控件验证E-mail地址和邮编等格式 69.如何使用RangeValidator控件验证输入的信息是否在指定范围内 70.如何使用CompareValidator控件对两个输入控件比较验证 71.如何使用CustomValidator控件自定义验证格式 72.如何使用ValidationSummary控件总结所有验证控件的错误信息 73.如何创建自定义功能的验证控件 74.如何禁用服务器控件的验证功能 75.如何控制页面部分验证控件有效 76.如何实现控件即时验证功能 77.如何使用验证控件综合验证用户注册页面 78.如何验证DataGrid控件的编辑列 81.如何使用验证控件验证日期类型的输入(CompareValidator) 81.如何使用验证控件验证日期类型的输入(CustomerValidator) 81.如何使用验证控件验证日期类型的输入(RegularValidator) 第5章 高级Web控件 82.如何在网页中使用Calendar Web控件显示和选择日期 83.如何在Calendar Web控件中控制个别日的内容及显示 84.如何在Calendar Web控件中控制用户日期选定 86.如何使用XML控件显示XML文件和进行XSLT转换 87.如何使用AdRotator Web控件制作广告发布程序-示例1 87.如何使用AdRotator Web控件制作广告发布程序-示例2 88.如何创建用户控件 89.如何将Web窗体转换成用户控件 90.如何实现动态加载用户控件 92.如何使用TabStrip Web和MultiP
fastreport快速上手手册 这个也是从别的地方下载的 目 录 入门 5 绪言 6 关于FASTREPORT的说明 6 FASTREPORT的历史 6 创建报表 7 数据 8 参数 8 窗体 9 处理 10 准备报表 10 举例:设计一个简单报表 11 FASTREPORT内核 14 DELPHI控件面板 15 “FastReport”页 15 “FRTools”页 17 TfrReport控件 17 TfrDBDataSet控件 20 TfrUserDataSet控件 21 FASTREPORT对象 21 “Text”对象 22 “Band”对象 26 “Image”对象 29 “SubReport”对象 30 “Line”对象 30 “CheckBox”对象 30 “RichText”对象 30 “OLE”对象 31 “Chart”对象 32 “Shape”对象 34 “Barcode”对象 34 “RichText 2.0”对象 35 创建报表 36 FastReport中的Bands 36 简单报表(列表) 39 主-从报表 40 主-细-子细报表 40 交叉报表 40 动态报表 41 bands分隔 42 分栏报表 43 带封面的报表 43 嵌套报表(子报表) 43 主-从-从报表 44 复合报表 44 包含BLOB字段报表 44 没有band的报表 44 分组报表 44 图表报表 45 设计器 46 设计器 47 使用控制键 47 使用鼠标 48 报表选项 48 页面选项 49 设计器选项 51 对象观察器 52 “插入数据字段”窗口 53 数据字典 53 表达式编辑器 58 工具栏 60 “标准”工具栏 60 “格式”工具栏 61 “边框”工具栏 62 “对齐”工具栏 62 程序设计 64 事件 65 TfrReport对象的其它事件 65 变量 66 扩展FASTREPORT函数 68 设计你自己的预览窗口 68 扩展函数列表 69 报表示例 71 报表示例 72 在报表中插入图表 72 运用OnManualBuild事件控制报表逻辑结构 74 运行时使用代码手工合成报表 76 打印可变栏数或未知栏数的报表 77 打印可变栏数和栏宽可变的报表 78 最终用户特性 80 介绍 81 对话框 81 对话框窗体控件 82 Label 83 Edit 83 Memo 84 Button 84 CheckBox 85 RadioButton 85 ListBox 86 ComboBox 86 输入信息到报表中 87 数据访问控件 88 FastReport数据感知控件简介 89 TfrBDELookupComboBox 89 TfrBDETable 89 TfrBDEQuery 92 TfrBDEDataBase 93 创建报表 94 简单的“表格式”报表 94 带参数的报表 95 TFRDATASTORAGE控件 96 连接到一个数据库 97 打开一个数据表 98 生成一个查询 99 字段编辑器 99 创建查询字段 100 查询参数编辑器 101 联接数据 101 参数对话框 102 参数对话框设计器 102 内置语言 103 脚本语言和对象 104 编写代码 105 对象修改 107 内置函数 107 对象的属性和方法 110 解释器的使用 119

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧