我编写了一个脚本,它根据通过隐藏字段传递的服务器端变量动态创建一个html表。理想情况下,我想为每个可以填充服务器端的单元添加一个.NET标签和单选按钮控件。我意识到.NET控件都是在第一次编译页面时创建的,但是无论如何都要在以后添加它们?这是我构建表格的代码:
<script>
$(document).ready(function () {
var satShifts = $('#mainContent_hidSat').val();
var sunShifts = $('#mainContent_hidSun').val();
var monShifts = $('#mainContent_hidMon').val();
var tueShifts = $('#mainContent_hidTue').val();
var wedShifts = $('#mainContent_hidWed').val();
var thuShifts = $('#mainContent_hidThu').val();
var friShifts = $('#mainContent_hidFri').val();
var c = 0;
for (var i = 0; i < satShifts; i++) {
$('#tblSat').append('<tr><td class="individualShift">Shift: ' + ***LABEL & RAD here*** + '</td></tr>');
c++;
}
for (var i = 0; i < sunShifts; i++) {
$('#tblSun').append('<tr><td class="individualShift">Shift: ' + ***LABEL & RAD here*** + '</td></tr>');
c++;
}
for (var i = 0; i < monShifts; i++) {
$('#tblMon').append('<tr><td class="individualShift">Shift: ' + ***LABEL & RAD here*** + '</td></tr>');
c++;
}
for (var i = 0; i < tueShifts; i++) {
$('#tblTue').append('<tr><td class="individualShift">Shift: ' + ***LABEL & RAD here*** + '</td></tr>');
c++;
}
for (var i = 0; i < wedShifts; i++) {
$('#tblWed').append('<tr><td class="individualShift">Shift: ' + ***LABEL & RAD here*** + '</td></tr>');
c++;
}
for (var i = 0; i < thuShifts; i++) {
$('#tblThu').append('<tr><td class="individualShift">Shift: ' + ***LABEL & RAD here*** + '</td></tr>');
c++;
}
for (var i = 0; i < friShifts; i++) {
$('#tblFri').append('<tr><td class="individualShift">Shift: ' + ***LABEL & RAD here*** + '</td></tr>');
c++;
}
});
</script>
答案 0 :(得分:0)
加载页面后,无法将它们添加为.NET控件。这是设计的。
然而,您可以将它们添加为HTML元素,然后使用Request.Form["textboxName"]
在代码隐藏中访问它们的值。
然后,您可以将文本框的name
值设置为您希望在代码隐藏中检索它们的任何值(在这种情况下,它将是name="textboxName"
)。
或者,您可以使用服务器端变量从后端将它们渲染为ASP.NET控件。如果这是您想要的路线,我将进一步阐述。
更新:您在javascript中尝试执行的所有操作都可以使用Repeaters完成。
对于后端的每一天,添加如下所示的转发器:
<asp:Repeater ID="rptSaturdayShifts" runat="server">
<ItemTemplate>
<tr><td class="individualShift">Shift: <asp:Label id="lblYourLabel" runat="server" Text='<%# Eval("LabelContent") %>' /> <asp:RadioButton id="rbYourRadioButton" runat="server" /></td></tr>
</ItemTemplate>
</asp:Repeater>
您只需使用具有“LabelContent”属性的集合对您的转发器进行数据绑定,然后再渲染您的数据。现在,在保存时,您将不得不遍历所有转发器行。因此,在“保存”按钮上单击:
foreach (var item in rptSaturdayShifts.Items)
{
var yourRadioButton = (Label) item.FindControl("rbYourRadioButton");
// You can then access it using...
var radioButtonValue = yourRadioButton.SelectedValue;
}