在复选框列表选中的值

时间:2016-10-13 06:16:35

标签: c# asp.net checkboxlist

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

现在我想要的是,每当用户从列表中检查注册/传送契约值时,gridview就会被禁用。

我试过下面的代码。

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

会发生什么情况,它始终显示列表中Agreement的选定值, 20

以下是列表的屏幕截图

Img

更新

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();
}

2 个答案:

答案 0 :(得分:2)

您可以在代码中将属性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;
            }
        }

    }

答案 1 :(得分:1)

试试这个代码段

    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";
        }
    }