禁用gridviewtemplatefield而不是Visible = false
本文关键字:Visible false gridviewtemplatefield 禁用 | 更新日期: 2023-09-27 18:03:45
我目前在我的GridView
中隐藏了asp:TemplateField
列,GridViewEmps.Columns[12].Visible = false
来自代码滞后。这是正常工作的
但是,而不是隐藏它,我想禁用(或只读)整个GridView
列。如果这太困难,那么禁用此列中的DropDownList
(id DropDownListActive
)。目的是在某些情况下不能更改列的内容。例如,如果进行特定的搜索,则禁用此列。否则,将启用编辑。
protected void Btn_Search_Click(object sender, EventArgs e)
{
//Bind gridview to DataTable
string empStatus = this.DropDownListStatus.SelectedValue;
if (empStatus == "N/A")
{
GridViewEmps.Columns[12].Visible = false;
}
else
{
GridViewEmps.Columns[12].Visible = true;
}
}
和templatefield:
<asp:TemplateField HeaderText="Active" ItemStyle-Width="80px">
<EditItemTemplate>
<asp:DropDownList ID="DropDownListActive" SelectedValue='<%#Eval("Status")%>' runat="server">
<asp:ListItem Text="N/A" Value="--" Selected="True"></asp:ListItem>
<asp:ListItem Text="Active" Value="Active"></asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="LabelPrvStatus" runat="server" Text='<%# Bind("PrevStatus") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
谢谢。
DropDownListActive.Enabled = false;
或
DropDownListActive.IsEnabled = false;
(取决于SDK版本)
不可能用于整个容器,只能用于子控件
您说您正在使用TemplateField
,那么为什么不能在标记中禁用控件呢?
<asp:TemplateField>
<ItemTemplate>
<asp:DropDownList runat="server" ID="DropDownListActive" Enabled="false" />
</ItemTemplate>
</asp:TemplateField>
编辑
你给我的信息和说
你不需要知道何时启用或禁用;你只需要知道IF语句将列设置为visible=true和ELSE将列设置为visible=false
这是我所能做的最好的,希望能有所帮助
<asp:TemplateField>
<ItemTemplate>
<asp:DropDownList runat="server" ID="DropDownListActive" Enabled='<%# (int)Eval("ValueIDontNeedToKnow") == varToPassTheIfStatement) ? true : false %>' />
</ItemTemplate>
</asp:TemplateField>