知道在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
实际上,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