在复选框列表选定值上禁用 gridview
Disable gridview on checkboxlist selected value
我有一个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();
}
您可以在代码中将 属性 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;
}
}
}
试试这个片段
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";
}
}
我有一个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();
}
您可以在代码中将 属性 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;
}
}
}
试试这个片段
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";
}
}