时间:2015-04-26 10:50:22

标签: c# html asp.net

我有一个名为“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);

1 个答案:

答案 0 :(得分:1)

您无法通过Response.Write生成服务器端控件(更多信息here)。因此,您要写入输出的html元素是客户端控件而不是服务器端,并且无法使用Page.FindControl方法找到。

请考虑使用其中一个服务器端控件,例如Repeater