2013-05-05 86 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