c# - ASP.NET Webforms 复选框事件发送参数

标签 c# asp.net checkbox

我基本上有很多复选框调用相同的函数。为了确定每个操作应该触发的操作,我正在考虑为将要触发的函数传递一个参数。

我的复选框是这样的:

<asp:CheckBox ID="checkBoxRegul" runat="server" CssClass="" Visible="false" OnCheckedChanged='checkBoxRegularizarChangedEvent' AutoPostBack="True" />

我的功能是这样的:

protected void checkBoxRegularizarChangedEvent(object sender, EventArgs e)
{
    CheckBox cb = (CheckBox)sender;
}

如何通过 EventArgs 发送和接收信息?

谢谢!

最佳答案

这并不简单,但它是可行的。 EventArgs(e) 不能直接存储附加信息,但您可以使用可包含附加信息的自定义事件创建自定义控件。

第 1 步:创建一个继承自 EventArgsCheckBoxEventArgs 类 (CheckBoxEventArgs.cs)。添加公共(public)属性来保存您需要的信息。

public class CheckBoxEventArgs: EventArgs
{
    public string ValueOne { get; set; }
    public string ValueTwo { get; set; }
     
}

第 2 步:将自定义 .ascx 控件添加到您的项目 (CustomCheckBox.ascx)。将复选框添加到 HTML。

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="CustomCheckBox.ascx.cs" Inherits="CustomControls.CustomCheckBox" %>
<asp:CheckBox ID="chkCheckBox" runat="server" OnCheckedChanged="chkCheckBox_CheckedChanged" AutoPostBack="True" />

自定义代码隐藏如下:

  • 使用自定义 EventHandler 定义 CheckChanged 事件
  • 添加属性来存储自定义复选框值
  • 添加文本属性并将值传递给复选框文本
  • 响应 CheckChanged 事件并引发您的自定义事件

//CustomCheckBox.cs

public partial class CustomCheckBox : System.Web.UI.UserControl
{

    public event EventHandler<CheckBoxEventArgs> CheckChanged;
    
    public string ValueOne { get; set; }
    public string ValueTwo { get; set; }
    
    public string Text
    {
        get { return chkCheckBox.Text; }
        set { chkCheckBox.Text = value; }
    }
    
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void chkCheckBox_CheckedChanged(object sender, EventArgs e)
    {
    
        if (CheckChanged != null)
        {
             var args = new CheckBoxEventArgs()
             {
                 ValueOne = this.ValueOne,
                 ValueTwo = this.ValueTwo
             };
            CheckChanged(this, args);
        }
    
    }

}

第 3 步:将 CustomCheckBox.ascx 添加到您的页面并注册 OnCheckChanged 事件。

<%@ Register src="CustomCheckBox.ascx" tagname="CustomCheckBox" tagprefix="uc1" %>
...
<uc1:CustomCheckBox ID="CustomCheckBox1" runat="server" AutoPostBack="True" OnCheckChanged="CustomCheckBox1_OnCheckChanged" ValueOne="one" ValueTwo="two"/>

将代码添加到代码隐藏页面以响应您的自定义 checkchanged 事件,并使用自定义值(它们可直接从您创建的 customEventArgs (e) 获取)

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

    }

    protected void CustomCheckBox1_OnCheckChanged(object sender, CheckBoxEventArgs e)
    {
        var val1 = e.ValueOne;
        var val2 = e.ValueTwo;

        //use custom values
    }
}

关于c# - ASP.NET Webforms 复选框事件发送参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37306474/

相关文章:

jquery - jquery如何从表中提取列

html - 复选框输入元素不垂直对齐

JQuery 和复选框

c# - 异步方法不调用

c# - 模拟 Azure MobileServiceClient

c# - 是否有将阿拉伯语 html 转换为 pdf 的免费组件?

asp.net - BC30456 : 'CreateResourceBasedLiteralControl' is not a member of 'ASP.staff_hod_site_master'

c# - VS 2015 文件保存时 CPU 使用率高

c# - 如何容纳移动设备

c# - System.Web.Security 的替代方案,使用相同的数据库