c# - Repeater 或 DataList 中的复选框 OnClick/ItemCommand

标签 c# asp.net repeater datalist

当在中继器控件内单击复选框时,我需要在中继器的一行上执行一些服务器端逻辑。

有人知道怎么做吗?

在我看来,您无法触发项目命令,如果您使用 CheckBoxes OnClick,则无法获得转发器行。

最佳答案

这是我过去如何做类似事情的快速模型。

    <asp:Repeater id="repeater1" runat="server" OnItemDataBound="repeater1_OnItemDataBound" >
        <ItemTemplate>
            <asp:CheckBox ID="chk" runat="server" OnCheckedChanged="Check_Changed" AutoPostBack="true" />
        </ItemTemplate>
    </asp:Repeater>

代码隐藏:

    public class Model {
        public int Id { get; set; }
        public string Name { get; set; }
    }

    public partial class Checkboxes : System.Web.UI.Page {
        protected void Page_Load(object sender, EventArgs e) {
            if(!IsPostBack ) {
                repeater1.DataSource = new List<Model> { 
                               new Model { Id = 1, Name = "a" }, 
                               new Model { Id = 2, Name = "b" }, 
                               new Model { Id = 3, Name = "c" } };
                repeater1.DataBind();
            }
        }

        protected void repeater1_OnItemDataBound(Object sender, RepeaterItemEventArgs e) {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
                var item = e.Item.DataItem as Model;
                if (item != null) {
                    var chk = e.Item.FindControl("chk") as CheckBox;
                    if (chk != null) {
                        chk.Text = item.Name;
                        chk.InputAttributes.Add("value", item.Id.ToString());
                    }
                }
            }
        }

        protected void Check_Changed(Object sender, EventArgs e) {
            var id = ((CheckBox) sender).InputAttributes["value"];
            //you now have access to the item id and can manipulate at will.
        }
    }

关于c# - Repeater 或 DataList 中的复选框 OnClick/ItemCommand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3566979/

相关文章:

C# Skype4COM SendMessage 用户名

c# - 为什么在 WPF 中将 INotifyPropertyChanged 与绑定(bind)一起使用?

c# - 在中继器中搜索 ImageButton

javascript - 光 slider 数据拇指图像路径未使用 Eval() 从数据库绑定(bind)

c# - 保护/省略 NHibernate 中域实体的选定属性(子类、投影、?)

c# - SlideInEffect 和 TurnstileFeatherEffect 不起作用

C#、ASP.NET - 限制对 Controller 方法的访问

asp.net - 无法识别配置文件 Web.config

asp.net - Response.Redirect 偶尔会导致错误,但我无法重现它

c# - 如何在转发器控件中查找控件?