1

我将一个 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;

那么谁可以知道检查的项目?

提前致谢

4

2 回答 2

4

真的, X.GetCmp() 没有按预期工作。我们将进行调查。(已调查。请参阅示例下方的编辑。)

但是,无论如何,它都不会提供对 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 获取值看起来是唯一合适的解决方案。

于 2013-05-06T09:55:06.733 回答
1

这些链接值得一试。被问到了同样的问题

ext-net-radiogroup-checkeditems-始终为空

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

于 2013-05-06T09:29:37.840 回答