如何从 C# 中获取 splittbutton 中的复选框值?

How to get the checkbox value inside splittbutton from c#?

我在 EXT.NET 中遇到问题。我在 EXT.NET

中有下一个结构
<ext:SplitButton runat="server" ID="btnExcel" Icon="PageExcel" ToolTip="Something text" Cls="ReportesButton" OverCls="ReportesButtonOver">
        <Bin>
            <ext:Menu runat="server" ID="Menu3">
                <Items>
                    <ext:Panel runat="server" ID="Panel17" Width="180" Height="25" Layout="VBoxLayout">
                        <Items>
                            <ext:Checkbox runat="server" ID="chkbox" Checked="false" IndicatorText="Something text">
                                <Listeners>
                                    <Change Handler="#{btnExcel}.bin[0].hide();"></Change>
                                </Listeners>
                            </ext:Checkbox>
                        </Items>
                    </ext:Panel>
                </Items>
            </ext:Menu>
        </Bin>
        <Listeners>
            <ArrowClick Handler="this.bin[0].show(); this.bin[0].alignTo(this.el);"></ArrowClick>
        </Listeners>
</ext:SplitButton>  

直到这一刻,一切都很好,但是当我尝试使用 chkbox.Checked 或 chkbox.Value 在我的 .cs class 中获取值时,该值始终为 false,即使我更改了复选框的值。我从来没有遇到过 chkbox.Checked 以其他方式使用复选框的问题。我会很感激一些帮助。我用的是EXT.NET 3.1

代码隐藏只会看到页面最初的值(只要在标记中定义,而不是来自其他代码隐藏调用,如 Page_Load()),除非您以某种方式提交了这些值。 Ext.NET 只是不会在每次调用后台代码时都提交回所有内容,因此问题不一定出在您提供或显示的代码片段中,而是您调用后台代码的方式。

通常 formPanel 中的表单字段是在调用代码后提交的,但这取决于您调用代码的方式。

在您的情况下,您可能需要在直接 event/method 调用中使用 ExtraParameter 传递复选框的当前值。但实际上,这取决于您如何调用背后的代码。

对于传递复选框值的 DirectEvent 处理按钮,它将是:

<ext:Button runat="server" Text="Check">
    <DirectEvents>
        <Click OnEvent="CheckCheckBoxValue">
            <ExtraParams>
                <ext:Parameter
                    Name="name"
                    Value="App.Panel17.down('checkbox').getValue()"
                    Mode="Raw"
                    />
            </ExtraParams>
        </Click>
    </DirectEvents>
</ext:Button>

基于DirectEvents - WebService example

的代码片段

额外的参数可以是一个选项,但我所做的是改变控制和结构,这样:

<ext:SplitButton runat="server" ID="btnExcel" Icon="PageExcel" ToolTip="Something Text" Cls="ReportesButton" OverCls="ReportesButtonOver">
    <Bin>
        <ext:Menu runat="server" ID="Menu3">
            <Items>      
                <ext:CheckMenuItem ID="chkbox" runat="server" Text="Something Text" Checked="false">
                    <Listeners>
                        <Click Handler="#{btnExcel}.bin[0].hide();"></Click>
                    </Listeners>
                </ext:CheckMenuItem>                                              
            </Items>
        </ext:Menu>
    </Bin>
    <Listeners>
        <ArrowClick Handler="this.bin[0].show(); this.bin[0].alignTo(this.el);"></ArrowClick>
    </Listeners>
</ext:SplitButton>

我认为该结构必须与特定控件配合使用才能 运行 很好