2013-05-05 90 views
1

我dinamically添加一个RadioGroup中到面板中勾选知道什么无线电(请参见下面的代码)在RadioGroup中(ext.net)

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

真的像预期X.GetCmp()不工作。我们会调查。 (已调查,请参阅下面的示例编辑。)

虽然,无论如何,它不会访问电台的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> 

EDIT

不幸的是,X.GetCmp()不能正常工作。它只能在使用由X.GetCmp()创建的所有Radio创建RadioGroup的Items时使用,但它太麻烦了。因此,从POST获取价值是唯一合适的解决方案。

+0

是的,我用请求[“GroupRadio_ID”]读取了ID,它将检索到所选无线电的ID – 2013-05-06 16:32:50