知道在RadioGroup (ext.net)中检查了什么无线电

本文关键字:检查 什么 无线电 net RadioGroup ext | 更新日期: 2023-09-27 18:12:07

我动态地将一个RadioGroup添加到面板中(见下面的代码)

ctrl = new Ext.Net.RadioGroup();
ctrl.ID = idPregunta.ToString();
ctrl.EnableViewState = true;
((Ext.Net.RadioGroup)ctrl).GroupName = idPregunta.ToString();
((Ext.Net.RadioGroup)ctrl).FieldLabel = pregunta;
((Ext.Net.RadioGroup)ctrl).Height = 40;
((Ext.Net.RadioGroup)ctrl).LabelAlign = LabelAlign.Top;
((Ext.Net.RadioGroup)ctrl).ColumnsNumber = respuestas.Count;
bool First = true;
int radio=1;
foreach (var r in respuestas)
{
    Ext.Net.Radio rdio = new Radio();
    rdio.BoxLabel = r.ToString();
    rdio.Width = 100;
    rdio.ID = RADIO_ID + radio.ToString();
    if (First)
    {
        rdio.Checked = true;
        First = false;
    }
    radio++;
    ((Ext.Net.RadioGroup)ctrl).Items.Add(rdio);
 }

但是当我试图在代码中读取选中的项时,我的组后面没有项

   p.RespuestaSeleccionada = X.GetCmp<Ext.Net.RadioGroup>(preg.ID).CheckedItems.FirstOrDefault<Ext.Net.Radio>().BoxLabel;

那么谁能知道选中的项目呢?

Thanks in advance

知道在RadioGroup (ext.net)中检查了什么无线电

实际上,X.GetCmp()并不像预期的那样工作。我们会调查的。(调查。参见示例下面的EDIT。)

但是,无论如何,它都不能访问Radio的BoxLabel。X.GetCmp<>只是从POST中检索相应的值,但是BoxLabel不是一个可提交的东西。您可以访问Radio的InputValue(如果省略了InputValue,则可以访问其客户端id)。

现在,您可以直接从POST中检索。

<%@ Page Language="C#" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<script runat="server">
    protected void RenderRadioGroup(object sender, DirectEventArgs e)
    {
        RadioGroup rg = new RadioGroup()
        {
            ID = "RadioGroup1",
            GroupName = "RadioGroup1",
            ColumnsNumber = 1,
            Items =
            {
                new Radio() { InputValue = "Radio1", BoxLabel = "Radio1" }, 
                new Radio() { InputValue = "Radio2", BoxLabel = "Radio2" }
            }
        };
        rg.Render(this.Form);
    }
    [DirectMethod]
    public void GetCheckedItems()
    {            
        X.Msg.Alert("GetCheckedItems", Request.Params["RadioGroup1"]).Show();
    }
</script>
<!DOCTYPE html>
<html>
<head runat="server">
    <title>Ext.NET v2 Example</title>
</head>
<body>
    <form runat="server">
        <ext:ResourceManager runat="server" />        
        <ext:Button runat="server" Text="Render a RadioGroup" OnDirectClick="RenderRadioGroup" />
        <ext:Button runat="server" Text="Get CheckedItems" Handler="App.direct.GetCheckedItems();" />
    </form>
</body>
</html>

编辑

不幸的是,X.GetCmp()不能工作。它只能在用X.GetCmp()创建的所有Radio填充已创建的RadioGroup的Items时才能工作,但是它太麻烦了。因此,直接从POST获取值似乎是唯一合适的解决方案。

这些链接值得一看。同样的问题

ext-net-radiogroup-checkeditems-is-always-null

ext-radiogroup-how-to-access-the-value-of-selected-radio-button