我就是想编辑gridview中一条数据时用下拉菜单选择另一数据表中的一个字段但是更新时下拉菜单选择的内容更新不上去             <asp:TemplateField HeaderText="supply">
                    <EditItemTemplate>
                        <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource2"
                            DataTextField="company" DataValueField="company">
                        </asp:DropDownList>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="supply" runat="server" Text='<%#Bind("supply") %>'></asp:Label>
                    </ItemTemplate>
                 <ControlStyle Width="160px" />
                 <ItemStyle Width="160px" />
              </asp:TemplateField>

解决方案 »

  1.   


    for(int i=0;i<GridView1.Rows.Count;i++)
    {
    DropDownList1 DropDownList1=GridView1.Rows[i].FindControl("DropDownList1") as DropDownList;  
    }
      

  2.   

    什么都是好的,而且dropdownlist里面内容也显示的,就是选择好之后点更新,更新出来的是空值,数据库里也被改为NULL
    。1楼你那个是什么我怎么看不懂我这个是加在gridview编辑状态里的dropdownlist
    后台没有代码。只有前台代码  <asp:GridView ID="GridView1" runat="server" AllowPaging="True"
            AutoGenerateColumns="False" DataKeyNames="id" DataSourceID="SqlDataSource1" Width="845px">
            <Columns>
     <asp:TemplateField HeaderText="supply">
                        <EditItemTemplate>
                            <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource2"
                                DataTextField="company" DataValueField="company">
                            </asp:DropDownList>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="supply" runat="server" Text='<%#Bind("supply") %>'></asp:Label>
                        </ItemTemplate>
                     <ControlStyle Width="160px" />
                     <ItemStyle Width="160px" />
                    </asp:TemplateField>
            </Columns>
        </asp:GridView>
      

  3.   

    刚好我前几天碰到楼主的问题,读取下拉列表用以下形似就可以了.((DropDownList)(GridView1.Rows[e.RowIndex].FindControl("DropDownList1"))).Text.Trim()
      

  4.   

    我还是整个发出来吧整个的表里面只有两个列,ID为自动编号 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
            DeleteCommand="DELETE FROM [purchasing] WHERE [id] = @id" InsertCommand="INSERT INTO [purchasing] ([supply]) VALUES (@supply)"
            SelectCommand="SELECT [id], [supply] FROM [purchasing] WHERE ([id] = @id)"
            UpdateCommand="UPDATE [purchasing] SET [supply] = @supplyWHERE [id] = @id">
            <DeleteParameters>
                <asp:Parameter Name="id" Type="Int32" />
            </DeleteParameters>
            <UpdateParameters>
                <asp:Parameter Name="supply" Type="String" />
            </UpdateParameters>
            <SelectParameters>
                <asp:ControlParameter ControlID="TextBox1" Name="pronum" PropertyName="Text" Type="String" />
            </SelectParameters>
            <InsertParameters>
                <asp:Parameter Name="supply" Type="String" />
            </InsertParameters>
        </asp:SqlDataSource>
      

  5.   

    http://msdn.microsoft.com/en-us/library/ms972948.aspx
      

  6.   


    UpdateCommand="UPDATE [purchasing] SET [supply] = @supplyWHERE [id] = @id">上面的@supplyWHERE 之间要有空格吧!!!你好像没有,这样能更新吗???
      

  7.   

    还是不行,我照着8楼那链接上面的写了之后出现错误。
    “DropDownList1”有一个无效 SelectedValue,因为它不在项目列表中。
      

  8.   

    我觉得你这个问题应该放到ASP。net那边提问!