前台
<asp:Repeater ID="book" Runat="server">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td align="center" width="40" bgColor="#ffffff" height="15">技能</td>
<td bgColor="#ffffff" height="15"><%#DataBinder.Eval(Container,"DataItem.d1")%></td>
<TD width="53" bgColor="#ffffff" height="15">
<select id="S<%#DataBinder.Eval(Container,"DataItem.id")%>" runat="server" style="WIDTH: 100%; CLIP: rect(1px 38px 19px 1px); HEIGHT: 100%" name="select">
<OPTION value="" selected></OPTION>
<OPTION value="√">√</OPTION>
<OPTION value="○">○</OPTION>
<OPTION value="×">×</OPTION>
</select></select>
</TD>
</tr>
</ItemTemplate>
</asp:Repeater>后台提交表格的时候想要得到select的值传到数据库中
        HtmlSelect tempselect;
                tempselect  = (HtmlSelect)this.book.FindControl(select的id值);
                sql="update table set d2='"+tempselect.Value+"' where id='"+id+"'";
                提示错误:未将对象引用设置到对象的实例         tempselect.Value好像没得到值
怎么才能正确的取得select的值

解决方案 »

  1.   

    你查看下愿文件,生成的HTML里,tempselect 的名字可能已经被换掉了。不是S**。。前面应该还会自动产生一串编号的。。
      

  2.   

    tempselect  你这个SELECT都是动态生成出来的。当然找不到了。
    你只能在item 绑定事件里去找
      

  3.   

    没有换,我昨天看过,结果是 <select>中的runat=server 自动丢失。不知道为什么。
    所以我又换成dropdownlist ,结果页面显示的不是下拉框,而是直接把所有的select的每个值都写成一行,显示出来了。但这次的runat=server却没有丢失。
    很怪。
      

  4.   

    select中的runat应该不会丢失阿 我一直是这样用的
      

  5.   

    tempselect  = (HtmlSelect)this.book.FindControl(select的id值);这个只会在最外面一层找,
    <TABLE TABLE1>
    <tr>
    <td>
        <INPUT TXT1>
       <table TABLE2><tr><TD><INPUT TXT2></TD></tr></table>
    </TD>
    </TR>
    </TABLE>
    如果在TABLE1单元中找,只能找到TXT1和TABLE2,要想找到TXT2,你必须在TABLE2的单元个中找
      

  6.   

    晕了,我的所有的select控件都在<asp:repeater id=book runat=server>里面。
    tempselect  = (HtmlSelect)this.book.FindControl(select的id值);
    我这样写难道有错了?
      

  7.   

    select 的runat=server确实是丢了啊!
    而且换成dropdownlist的时候,显示的效果都不是下拉框。
    我郁闷死了,是不是我把repeater换一下会好些?
      

  8.   

    this.book.controls.count看看是几个,debug把他们都打出来
    看看有没有table这样的,
    有的话,table 中还有control的
      

  9.   

    this.book.controls.count的结果是10。
    但是我查代码的结果应该是9个才对。
    而且:
    string tempd ="";
    for(int i =0;i<this.book.Controls.Count;i++)
    {
    tempd = tempd +"|"+this.book.Controls[i].ID.ToString();
    }
    this.Response.Write(this.book.Controls.Count+"|"+tempd);提示:未将对象引用设置到对象的实例
      

  10.   

    this.book.controls.count的结果是10。把每个control打印出来
      

  11.   

    很有可能一个control叫什么html什么的
    这个控件是个容器,
    你的select 在里面,
    例如
    this.book.controls(0).controls(0)