如何从 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>
的代码片段
额外的参数可以是一个选项,但我所做的是改变控制和结构,这样:
<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>
我认为该结构必须与特定控件配合使用才能 运行 很好
我在 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>
的代码片段
额外的参数可以是一个选项,但我所做的是改变控制和结构,这样:
<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>
我认为该结构必须与特定控件配合使用才能 运行 很好