【问题标题】:how to check the checkbox inside the repeater at binding time accordingto value?如何在绑定时根据值检查转发器内的复选框?
【发布时间】:2012-01-16 13:00:42
【问题描述】:

我有一个中继器,里面有一个复选框。现在我想根据列值(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;

            }
        }

    }

}

【问题讨论】:

    标签: asp.net checkbox repeater findcontrol itemdatabound


    【解决方案1】:

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

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

      <asp:CheckBox id='isMarried' runat='server' 
      Checked='<%# Convert.ToBool(Eval("IsMarried")) ? true : false %>' />
      
    2. 正如您所提到的,您可以使用repeater_ItemDataBound 找到每一行的复选框,并相应地设置其值:

      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. 另一种方法是在隐藏字段中注入布尔状态(此处为婚姻状态)并将其发送到客户端,然后在客户端使用 jQuery(或任何其他 JavaScript 框架)更新根据这些隐藏字段的值,复选框的选中状态:

    【讨论】:

    • 我不知道这是否与较新版本有关,但在 Visual Studio for Mac 上需要:Person person = (Person)e.Item.DataItem;或 var person = (Person)e.Item.DataItem;
    猜你喜欢
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 2017-07-11
    相关资源
    最近更新 更多