ddl_art在模版里边,不能这样直接引用。
而且用数组邦定ddl,直接帮数据源就可以了,不用一项一项的写
应该这样。((DropDownList)(DetailsView1.items[i].findcontrol("ddl_art"))).Datasource=str

解决方案 »

  1.   

    还少一句((DropDownList)(DetailsView1.items[i].findcontrol("ddl_art"))).DataBind();
      

  2.   

    你的方法我试了,可是items这一项不能用嘛
    我改成这样了
         ((DropDownList)(DetailsView1.Rows[10].FindControl("ddl_art"))).DataSource=str;
                        ((DropDownList)(DetailsView1.Rows[10].FindControl("ddl_art"))).DataBind();
    但是现在第一条语句报索引超出范围。必须为非负值并小于集合大。
    我调试时看到STR数组个数为2,每项中也有两个值,应该讲不会有问题,模版里应该如何改?
      

  3.   

    你把string数组变成ArrayList 在邦定
      

  4.   

    Rows[10]?超范围了吧/根数组有关系吗/
      

  5.   

    我改成rows[9],还是原来那样。rows是detailsview数下来第几个控件的意思吧。
      

  6.   

    阿??
    row[i]表示detailsview的第i行。你不是每行都有ddl吗?
    我有点晕了
      

  7.   

    你邦定dropdownlist的代码写在什么地方??
    应该写在detailsview的rowbing之类的函数里边。
      

  8.   

    我就第十行有dropdownlist控件,其中第一个控件应该是以[0]表示吗?反正现在[9][10]都不行。
    我也用了arraylist也还是报那个错。请问rowbind如何用,具体些,谢谢!现在模版里这样的
    ItemTemplate>
     <asp:DropDownList ID="ddl_art"   OnLoad="dropdownlist_bind"  AppendDataBoundItems=true  AutoPostBack=true    runat="server" >
      </asp:DropDownList>
     </ItemTemplate>cs:    {        
            SqlConnection con1 = dbconn.CreateConnection();
                con1.Open();
                string sql = "select *, cata_name from product_info,pro_cata where cata_no in (select pro_c_cata from product_info where id='" + id + "') and id='" + id + "'";            SqlCommand com = new SqlCommand(sql, con1);
                SqlDataReader srd = com.ExecuteReader();
                while (srd.Read())
                {
         
                    string pro = srd["exto_name"].ToString();
                    ArrayList array = new ArrayList();
                    string[] str = pro.TrimEnd('$').Split('$');
                                              
                    int i = str.Length;                for (int a = 0; a < i - 1; a++)
                    {
                                            array.Add(str[a]);
                                      }
                                     ((DropDownList)(DetailsView1.Rows[10].FindControl("ddl_art"))).DataSource=array;
                        ((DropDownList)(DetailsView1.Rows[10].FindControl("ddl_art"))).DataBind();            }         
                srd.Close();        }
      

  9.   

    1.就第十行有dropdownlist控件??<ItemTemplate>
                             <asp:DropDownList ID="ddl_art"  AutoPostBack=true  DataTextField="exto_name" DataValueField="exto_name" DataSourceID="SqlDataSource1"  runat="server" >
                                    </asp:DropDownList>
                        </ItemTemplate>
    用模版列怎么可能就第十行有ddl??2                                 ((DropDownList)(DetailsView1.Rows[10].FindControl("ddl_art"))).DataSource=array;
                        ((DropDownList)(DetailsView1.Rows[10].FindControl("ddl_art"))).DataBind();应该写在DETAILSVIEW的rowbind里边,而且需要改
    我这边没有调试环境,没法给你写代码,你这么rows[10]肯定不对了,艾
      

  10.   

    你看我的代码就可以了。是不是第十个控件呢?      <asp:DetailsView ID="DetailsView1"  runat="server" DataSourceID="SqlDataSource1" Height="49px"
                Style="z-index: 104; left: 136px; position: absolute; top: 179px" Width="493px" AutoGenerateRows="False" >
                <Fields>
                    <asp:ImageField DataImageUrlField="pro_path"   ControlStyle-Height="100px" ItemStyle-Height="100px" DataImageUrlFormatString="up/{0}" HeaderText="物品图片">
                        <ItemStyle Height="100px" />
                    </asp:ImageField>
                    <asp:BoundField DataField="ex_kind" HeaderText="交换方式" SortExpression="ex_kind" />
                    <asp:BoundField DataField="cata_name" HeaderText="物品类别" SortExpression="pro_c_cata" />
                    <asp:BoundField DataField="ex_name" HeaderText="物品名称" SortExpression="ex_name" />
                    <asp:BoundField DataField="pro_intro" HeaderText="物品说明" SortExpression="pro_intro" />
                    <asp:BoundField DataField="ex_qt" HeaderText="物品数量" SortExpression="ex_qt" />
                    <asp:BoundField DataField="ex_price" HeaderText="物品估价" SortExpression="ex_price" />
                    <asp:BoundField DataField="pro_new" HeaderText="新旧程度" SortExpression="pro_new" />
                    <asp:BoundField DataField="pro_new" HeaderText="使用多久" SortExpression="pro_new" />
                    <asp:TemplateField HeaderText="欲交换物品" SortExpression="exto_name">
                        <ItemTemplate>
                             <asp:DropDownList ID="ddl_art"   OnLoad="dropdownlist_bind"  AppendDataBoundItems=true  AutoPostBack=true    runat="server" >
                                    </asp:DropDownList>
                        </ItemTemplate>
                                </asp:TemplateField>
                    <asp:BoundField DataField="release_time" HeaderText="发布有效期" SortExpression="release_time" />
                </Fields>
                <RowStyle Font-Size="14px" />
            </asp:DetailsView>
      

  11.   

    终于我自己试成功了,但是怎么会是用rows[0]呢?
    这个ddl控件是在第十行啊。