【问题标题】:Disable gridview on checkboxlist selected value在复选框列表选定值上禁用网格视图
【发布时间】:2016-10-13 06:16:34
【问题描述】:

我有一个Checkboxlist,其中项目是从数据库绑定的。

现在我想要的是,每当用户从列表中检查 Registration / Conveyance Deed 值时,gridview 应该被禁用。

我尝试了以下代码。

protected void ddlStatus_SelectedIndexChanged(object sender, EventArgs e)
{
    if (ddlStatus.SelectedValue == "30" && strMode == "M")
    {
        GridExpInfo.AllowAddingRecords = false;
    }
    else
    {
        GridExpInfo.AllowAddingRecords = true;
    }
}

发生的情况是,它总是显示从列表中选择的 Agreement 值,即 20

下面是列表截图

更新

ASPX:-

<asp:CheckBoxList ID="ddlStatus" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlStatus_SelectedIndexChanged">
                </asp:CheckBoxList>

C#

private void BindStatus()
{
    DataTable dtstatus = new DataTable();
    OracleDataAdapter dastatus = new OracleDataAdapter("SELECT lookup_code agr_type_code, meaning agr_type " +
                                                        "FROM apps.fnd_lookup_values_vl " +
                                                    "WHERE (NVL ('', territory_code) = territory_code OR territory_code IS NULL " +
                                                           ") AND lookup_type = 'XXACL_FARM_AGR_TYPE' " +
                                                       "AND (lookup_type LIKE 'XXACL_FARM_AGR_TYPE') " +
                                                       "AND (view_application_id = 0) " +
                                                       "AND (security_group_id = 0) " +
                                                     "ORDER BY 1", ObjPriCon);
    dastatus.Fill(dtstatus);
    ddlStatus.DataTextField = "agr_type";
    ddlStatus.DataValueField = "agr_type_code";
    ddlStatus.DataSource = dtstatus;
    ddlStatus.DataBind();
}

【问题讨论】:

  • 您只想禁用添加新行?
  • @mww: 是的,我想禁用only那个
  • 请说明您是如何创建复选框列表的
  • @mww:查看更新的问题

标签: c# asp.net checkboxlist


【解决方案1】:

您可以在代码中将属性AllowUserToAddRows 设置为false,如下所示。

this.yourGrid.AllowUserToAddRows = false;
this.BindDataGridView();

并使用ForEach 循环检查您的状况。现在,您不仅首先选中了所有选中的项目。

 protected void ddlStatus_OnSelectedIndexChanged(object sender, EventArgs e)
    {
        foreach (ListItem li in ddlStatus.Items)
        {
            if (li.Value == "30" && strMode == "M")
            {
                GridExpInfo.AllowUserToAddRows  = false;
            }
            else
            {
                GridExpInfo.AllowUserToAddRows = true;
            }
        }

您也可以使用 LINQ 进行检查。

   protected void ddlStatus_OnSelectedIndexChanged(object sender, EventArgs e)
    {
        if (strMode == "M")
        {
            var disable = (from ListItem item in ddlStatus.Items.OfType<ListItem>()
                where item.Selected
                where item.Value == "30"
                select int.Parse(item.Value)).Any();

             if (disable)
            {
                GridExpInfo.AllowUserToAddRows  = false;
            }
            else
            {
                GridExpInfo.AllowUserToAddRows = true;
            }
        }

    }

【讨论】:

  • 你读过我的问题吗,我只想在Registration / Conveyance Deed 没有被解雇的情况下得到它。只有Agreement 条件被触发..
  • 当我用true 添加else 部分时它不起作用,但是当我删除else 部分时它运行良好..!!
【解决方案2】:

试试这个sn-p

    protected void myCheckBoxList_SelectedIndexChanged(object sender, EventArgs e)
    {
        bool enableGrid = true;
        foreach (ListItem listItem in ddlStatus.Items)
        {
            if (listItem.Value == "30" && listItem.Selected == true)
            {
                enableGrid = false;
            }
        }

        if (enableGrid == true)
        {
            //enable grid and/or row inserts here
            Label1.Text = "enabled";
        }
        else
        {
            //disable grid and/or row inserts here
            Label1.Text = "disabled";
        }
    }

【讨论】:

  • 喜欢这个逻辑,让我试试看..!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-22
  • 1970-01-01
  • 1970-01-01
  • 2015-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多