C# 是否禁用GridView TemplateField而不是Visible=false?
我当前正在使用C# 是否禁用GridView TemplateField而不是Visible=false?,c#,asp.net,webforms,C#,Asp.net,Webforms,我当前正在使用gridviewmps.Columns[12]在我的GridView中隐藏一个asp:TemplateField列。可见=false来自代码隐藏。这是正确的 但我不想隐藏它,而是想禁用(或只读)整个GridView列。如果这太困难,则禁用此列中的DropDownList(iddropdownlistative)。目的是在某些情况下无法更改列的内容。例如,如果进行了特定搜索,则此列将被禁用。否则,将启用它进行编辑 下面是设置可见性的代码。我想从可见更改为只读/禁用: protecte
gridviewmps.Columns[12]在我的GridView
中隐藏一个asp:TemplateField
列。可见=false
来自代码隐藏。这是正确的
但我不想隐藏它,而是想禁用(或只读)整个GridView
列。如果这太困难,则禁用此列中的DropDownList
(iddropdownlistative
)。目的是在某些情况下无法更改列的内容。例如,如果进行了特定搜索,则此列将被禁用。否则,将启用它进行编辑
下面是设置可见性的代码。我想从可见更改为只读/禁用:
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;
或
(取决于sdk版本)
整个容器不可能,仅子控件不可能
或
(取决于sdk版本)
对于整个容器来说是不可能的,只有子控件。您说过您正在使用
模板字段,那么为什么不能在标记中禁用该控件呢
<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>
您说过您正在使用一个模板字段,那么为什么不能禁用标记中的控件呢
<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>
GridViewEmps.Columns[12]。只读=true?这对您不起作用吗?我在vs2010autocomplete
中没有看到ReadOnly属性。这是绑定列还是自动生成的?如果它是绑定的,您可以将只读属性放在“否”中,因为它是一个TemplateField.GridViewEmps.Columns[12]。ReadOnly=true?这对您不起作用吗?我在vs2010autocomplete
中没有看到ReadOnly属性。这是绑定列还是自动生成的?如果它是绑定的,你可以将只读属性放在No中,我发布了它是一个TemplateField。我编辑了这个问题。它不能总是只读的。根据搜索的不同,它被禁用(或隐藏为当前状态)或启用编辑。您说过我想禁用(或只读)整个GridView列,编辑您的问题,还有,如果进行了特定搜索,您的意思是什么,我如何知道何时启用或禁用?您不需要知道何时启用或禁用;您只需要知道IF语句将列设置为visible=true,ELSE将列设置为visible=false。但为了便于讨论,我发布了代码。我编辑了问题。它不能总是只读的。根据搜索的不同,它被禁用(或隐藏为当前状态)或启用编辑。您说过我想禁用(或只读)整个GridView列,编辑您的问题,还有,如果进行了特定搜索,您的意思是什么,我如何知道何时启用或禁用?您不需要知道何时启用或禁用;您只需要知道IF语句将列设置为visible=true,ELSE将列设置为visible=false。但为了便于讨论,我已经发布了代码。