我有一个名为“row”的类,它有3个项{property,instance,degree}。 现在我想向用户显示我的项目或行,如果他改变了类的第三部分我编辑它。这是我动态生成行的代码,numberOfInstance是行数。
<div id="hidden" class="hiddendiv">
<%
string matn = "";
for (int i = 0; i < numberOfInstance ; i++)
{
row r= new row();
r = a[i];
matn+= " <div class='CMSdiv'>";
matn += "<input id='Text"+i+"' class='labelhid' type='text'"+"value = '"+r.Property+ "'/>";
matn += "<input id='Text2" + i + "' class='labelhid' type='text'" + "value = '" + r.instance+ "'/>";
matn += " <select id='Select" +i+ "'class='drophid' runat='server'>";
matn += " <option value= '"+ "خیلی زیاد"+"'>خیلی زیاد" + " <option value= '"+"زیاد'"+">زیاد";
matn += " <option value='"+"متوسط'"+">متوسط";
matn += " <option value='" + "کم'" + ">کم";
matn += "</select>";
matn += "</div>";
Response.Write(matn);
matn = "";
}
%>
</div>
现在,如果用户点击选择并选择一个选项,我会得到它的值,并在后面的代码中倒入r.degree。但无论我做了什么,我都无法在代码中找到它并且无效。这些是我的尝试:
var val = Request["Select" + i];
string selection = Request.Form["Select" + i];
hd = (HiddenField)Page.FindControl("Select" + i);
hd = (HiddenField)Control.FindControl("Select" + i);
答案 0 :(得分:1)
您无法通过Response.Write生成服务器端控件(更多信息here)。因此,您要写入输出的html元素是客户端控件而不是服务器端,并且无法使用Page.FindControl方法找到。
请考虑使用其中一个服务器端控件,例如Repeater。