2015-07-21 98 views
0

我目前隐藏了我的GridView中的asp:TemplateField列,其中GridViewEmps.Columns[12].Visible = false来自代码隐藏。这工作正常。为GridView TemplateField禁用而不是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

GridViewEmps.Columns [12] .ReadOnly = true; ?这不适合你吗? – Dylan

+0

我在vs2010'autocomplete'中看不到ReadOnly属性。 – rbhat

+0

这是一个绑定的列,还是你自动生成它?如果绑定了,你可以将只读属性放在 Dylan

回答

0
DropDownListActive.Enabled = false; 

DropDownListActive.IsEnabled = false; 

(根据SDK版本)

不可能为整个容器,只为孩子们的控制。

0

你说你使用的是TemplateField,那么为什么不能在标记中禁用控件呢?

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:DropDownList runat="server" ID="DropDownListActive" Enabled="false" /> 
    </ItemTemplate> 
</asp:TemplateField> 

编辑

有了你给我,说

你不需要知道什么时候启用或禁用信息;你只需要 知道IF语句设置列可见=真实和ELSE 设置列可见=假

这是尽我所能,希望它有助于

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:DropDownList runat="server" ID="DropDownListActive" Enabled='<%# (int)Eval("ValueIDontNeedToKnow") == varToPassTheIfStatement) ? true : false %>' /> 
    </ItemTemplate> 
</asp:TemplateField> 
+0

我编辑了这个问题。它不总是只读的。取决于搜索,它被禁用(或当前隐藏)或启用编辑。 – rbhat

+0

你说*我想禁用(或只读)整个GridView列*,编辑你的问题,也是,你是什么意思*如果做了特定的搜索*,我怎么知道什么时候启用或禁用? –

+0

您不需要知道何时启用或禁用;您只需要知道IF语句将列设置为visible = true,而ELSE将该列设置为visible = false。但为了争辩,我已经发布了代码。 – rbhat

相关问题