我目前正在asp:TemplateField
隐藏GridView
列,其中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;
}
}
模板字段:
<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>
感谢。
答案 0 :(得分:0)
DropDownListActive.Enabled = false;
或
DropDownListActive.IsEnabled = false;
(取决于sdk版本)
整个容器都不可能,只适用于儿童控制。
答案 1 :(得分:0)
你说你使用的是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>