如何在绑定时根据值检查转发器内的复选框?

发布于 2024-12-20 08:45:17 字数 1006 浏览 3 评论 0原文

我有一个中继器,里面有一个复选框。现在我想根据列值(0/1)检查它。我已经通过中继器的itemDataBound事件尝试过。如果行的值为 1,那么它会做什么,然后它会选中所有复选框,如果第一个复选框未选中,则它会取消选中所有复选框。 我的代码是:- `

                    <td align="center">
                        <asp:CheckBox ID="chk" runat="server" />
                    </td>
                </tr>
            </ItemTemplate>
        </asp:Repeater>`

ItemDataBound 事件代码是:-

 protected void rp_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    DataTable dt = new DataTable();
    dt = obj.abc(id);
    if (dt.Rows.Count > 0)
    {
        CheckBox chk = (CheckBox)(e.Item.FindControl("chk"));
        if (chk != null)
        {

            if (Convert.ToInt32(dt.Rows[0]["xyz"]) == Convert.ToInt32("0"))
            {
                chk.Checked = false;
            }
            else
            {
                chk.Checked = true;

            }
        }

    }

}

I have a repeater and inside it i have a checkbox. Now i want to check it according to columns value(0/1). I have tried it through the itemDataBound event of the repeater. what its doing if the rows has value 1 then its checked all checkbox and if first checkbox is unchecked then its unchecked all.
my code is:-
`

                    <td align="center">
                        <asp:CheckBox ID="chk" runat="server" />
                    </td>
                </tr>
            </ItemTemplate>
        </asp:Repeater>`

The ItemDataBound events code is :-

 protected void rp_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    DataTable dt = new DataTable();
    dt = obj.abc(id);
    if (dt.Rows.Count > 0)
    {
        CheckBox chk = (CheckBox)(e.Item.FindControl("chk"));
        if (chk != null)
        {

            if (Convert.ToInt32(dt.Rows[0]["xyz"]) == Convert.ToInt32("0"))
            {
                chk.Checked = false;
            }
            else
            {
                chk.Checked = true;

            }
        }

    }

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧时浪漫 2024-12-27 08:45:17

有很多方法可以做到这一点。

  1. 您可以编写内联 ASP.NET:

    >
    
  2. 正如您所提到的,您可以使用 repeater_ItemDataBound 查找每行的复选框,并相应地设置其值:

    protected void Repeater_ItemDataBound(对象发送者,RepeaterItemEventArgs e)
    {
        人 person = (Person)e.Item; // e.Item 是该行的数据源
        如果(人。已婚) 
        {
            CheckBox isMarried = (CheckBox)(e.Item.FindControl("isMarried"));
            isMarried.Checked = true;
        }
    }
    
  3. 另一种方法可能是注入隐藏字段中的布尔状态(此处为婚姻状态)并将其发送到客户端,然后在客户端使用 jQuery(或任何其他 JavaScript 框架)根据隐藏字段的值更新复选框的选中状态字段:

There are many ways to do that.

  1. You can write inline ASP.NET:

    <asp:CheckBox id='isMarried' runat='server' 
    Checked='<%# Convert.ToBool(Eval("IsMarried")) ? true : false %>' />
    
  2. As you have mentioned, you can use repeater_ItemDataBound to find the check-box of each row, and set its value accordingly:

    protected void repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        Person person = (Person)e.Item; // e.Item is the datasoruce of the row
        if (person.IsMarried) 
        {
            CheckBox isMarried = (CheckBox)(e.Item.FindControl("isMarried"));
            isMarried.Checked = true;
        }
    }
    
  3. Another way could be to inject the Boolean state (here, the marriage state) in a hidden field and send it to the client, then on client-side, using jQuery (or any other JavaScript framework), update check-boxes' checked state according to the value of those hidden fields:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文