我将一个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;
那么我能知道检查项目的人吗?
提前致谢
答案 0 :(得分:4)
实际上,X.GetCmp()无法按预期工作。我们会调查。 (已调查。请参阅样本下方的EDIT。)
但是,无论如何,它都无法访问Radio的BoxLabel。 X.GetCmp&LT;&GT;只是从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()无法正常工作。它只能在创建的RadioGroup的项目中填充由X.GetCmp()创建的所有Radio时才能工作,但它太麻烦了。因此,直接从POST获取值看起来是唯一合适的解决方案。
答案 1 :(得分:1)