日期:2014-05-18  浏览次数:20423 次

GridView中动态显示或隐藏某行中的控件
请问如何动态的显示或隐藏某行中的控件。现在设置控件的visible属性或者TableCell的display属性都行不通。请问是什么原因或者如果解决这个问题。

------解决方案--------------------
//WebUserControl.ascx.cs
HTML code

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:DropDownList runat="server" ID="DropDownList1" 
    onselectedindexchanged="DropDownList1_SelectedIndexChanged" 
    AutoPostBack="true" >
            <asp:ListItem Value="1">Item 1</asp:ListItem>
            <asp:ListItem Value="2">Item 2</asp:ListItem>
            <asp:ListItem Value="3">Item 3</asp:ListItem>
            <asp:ListItem Value="其它">其它</asp:ListItem>
        </asp:DropDownList>
        <asp:TextBox ID="TextBox1" runat="server" Visible="false" />
    </ContentTemplate>
</asp:UpdatePanel>

------解决方案--------------------
也就是说DropDownList和TextBox都放在UserControl里。根据选项隐藏或显示的处理代码也放到UserContrl的.cs里。

为了尽量避免闪烁,给UserControl套一个UpdatePanel,且设置UpdateMode为Conditional.

然后在主页面放置一个ScriptManager, 在TemplateField里放置UserControl.