2016-10-13 54 views
0

我有一个Checkboxlist其中项目绑定在数据库中。在复选框列表中选择的值禁用gridview

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

我试着用下面的代码。

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

会发生什么事是,它总是显示的Agreement从列表中,这是

下面列表

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

你想只禁止添加新行? –

+0

@mww:是的,我想禁用_only_ – BNN

+0

请同时显示如何创建复选框列表 –

回答

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

喜欢逻辑,让我试试看..! – BNN

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

    } 
+0

您是否阅读我的问题,我只是希望它在'Registration/Conveyance Deed'条件中被解雇。只有'协议'条件被解雇。 – BNN

+0

当我用'true'添加else部分它不起作用,但是当我移除其他部分时它工作得很好.. !! – BNN