如何在 ext.net 的 gridpanel 的组件列中显示/隐藏项目?

Posted

技术标签:

【中文标题】如何在 ext.net 的 gridpanel 的组件列中显示/隐藏项目?【英文标题】:How to show/hide an item in a component column in gridpanel in ext.net? 【发布时间】:2014-02-20 07:41:25 【问题描述】:

我有这个网格面板:

<ext:GridPanel ID="GridPanel1" runat="server" Width="300px" Height="200px" Header="false">
    <Store>
        <ext:Store ID="Store1" runat="server">
            <Model>
                <ext:Model ID="Model1" runat="server">
                    <Fields>
                        <ext:ModelField Name="Name" Type="String" />
                    </Fields>
                </ext:Model>        
            </Model>
        </ext:Store>
    </Store>
        <ColumnModel>
            <Columns>
                <ext:ComponentColumn ID="comColName" runat="server" Flex="1" Text="Name">
                    <Component>
                        <ext:Container ID="container" runat="server" Layout="HBoxLayout">
                            <Items>
                                <ext:TextField ID="txt1" runat="server" Flex="1"></ext:TextField>
                                <ext:Button ID="btn1" runat="server" Width="22px" Icon="Add">                                    
                                </ext:Button>
                            </Items>
                        </ext:Container>
                    </Component>
                </ext:ComponentColumn>
            </Columns>
        </ColumnModel>
    </ext:GridPanel>

而后面的代码是:

protected void Page_Load(object sender, EventArgs e)
        
            this.Store1.DataSource = new object[]  
                new object[] ,
                new object[] ,
                new object[] ,
                new object[] ,
                new object[] ,
                new object[] 
            ;

            this.Store1.DataBind();
        

截图如下:

我想要做的是在开始时只显示文本字段,然后在单击文本字段时在右侧显示添加按钮。此时应隐藏所有其他按钮。 我该怎么做?我想使用客户端脚本来实现这一点。请帮忙。在编辑列单元格时隐藏另一列也可能有效。谢谢。

【问题讨论】:

在我这边,你的代码什么也没显示??! 好的,我已经为 store 和 codebehind 添加了代码。 【参考方案1】:

示例

<%@ Page Language="C#" %>

<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>

<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    
        if (!X.IsAjaxRequest)
        
            this.Store1.DataSource = new object[] 
             
                new object[] ,
                new object[] ,
                new object[] 
            ;
        
    
</script>

<!DOCTYPE html>
<html>
<head runat="server">
    <title>Ext.NET v2 Example</title>
</head>
<body>
    <form runat="server">
        <ext:ResourceManager runat="server" />
        <ext:GridPanel 
            runat="server" 
            Width="300" 
            Height="200">
            <Store>
                <ext:Store ID="Store1" runat="server">
                    <Model>
                        <ext:Model runat="server">
                            <Fields>
                                <ext:ModelField Name="Name" />
                            </Fields>
                        </ext:Model>
                    </Model>
                </ext:Store>
            </Store>
            <ColumnModel>
                <Columns>
                    <ext:ComponentColumn runat="server" Flex="1" Text="Name">
                        <Component>
                            <ext:Container runat="server" Layout="HBoxLayout">
                                <Items>
                                    <ext:TextField runat="server" Flex="1">
                                        <Listeners>
                                            <Focus Handler="this.ownerCt.getComponent('AddButton').show();" />
                                            <Blur Handler="this.ownerCt.getComponent('AddButton').hide();" />
                                        </Listeners>
                                    </ext:TextField>

                                    <ext:Button 
                                        runat="server" 
                                        ItemID="AddButton" 
                                        Width="22" 
                                        Icon="Add" 
                                        Hidden="true" />
                                </Items>
                            </ext:Container>
                        </Component>
                    </ext:ComponentColumn>
                </Columns>
            </ColumnModel>
        </ext:GridPanel>
    </form>
</body>
</html>

顺便说一句,您可能想使用 TextField 的 RightButtons 集合。这是example。

【讨论】:

以上是关于如何在 ext.net 的 gridpanel 的组件列中显示/隐藏项目?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ext.Net 中隐藏 Gridpanel GroupCommand

Ext.Net学习笔记17:Ext.Net GridPanel Selection

如何在 GridPanel Ext.net Razor 中按名称获取值

Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法

Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法

如何从 Ext.net 3 剃须刀引擎列表中填充 GridPanel?