这个就是你要的答案:
http://expert.csdn.net/Expert/topic/1491/1491205.xml?temp=.7153589

解决方案 »

  1.   

    我是用VB的,还没完全看懂。你的DropDownList是在模板列的EditItemTemplate中吧,DataGrid在执行编辑命令的时候,你的DropDownList还没有创建,当然你无法引用它。
    为DropDownList绑定专门写一个函数,这样:
    void UserInfoGrid_Edit(Object sender, DataGridCommandEventArgs e) 
       {  
          UserInfoGrid.EditItemIndex = e.Item.ItemIndex;      
          BindGrid("UserId");
         BindDropDownList();
       }void BindDropDownList(){
    int i;
    int editindex=(int)UserInfoGrid.EditItemIndex;
    DropDownList DropDownList2=(DropDownList)UserInfoGrid.Items[editindex].FindControl("DropDownList2");
          Air.UserDB UserSystem = new Air.UserDB() ;
          DataView myUserInfods2 = UserSystem.GetAgentRecords() 
      DropDownList2.DataSource = myUserInfods2 ;
      DropDownList2.DataBind();
    }这是原文,
      

  2.   

    DropDownList DropDownList2=(DropDownList)UserInfoGrid.Items[editindex].FindControl("DropDownList2");写成VB是怎么样的?
      

  3.   

    <body style="font: 10.5pt 宋体">  <form runat="server">    <h3><font face="宋体">更新具有模板列的数据行</font></h3>    <span id="Message" EnableViewState="false" style="font: arial 11pt;" runat="server"/><p>    <ASP:DataGrid id="MyDataGrid" runat="server"
          Width="800"
          BackColor="#ccccff"
          BorderColor="black"
          ShowFooter="false"
          CellPadding=3
          CellSpacing="0"
          Font-Name="Verdana"
          Font-Size="8pt"
          HeaderStyle-BackColor="#aaaadd"
          OnEditCommand="MyDataGrid_Edit"
          OnCancelCommand="MyDataGrid_Cancel"
          OnUpdateCommand="MyDataGrid_Update"
          DataKeyField="au_id"
          AutoGenerateColumns="false"
        >      <Columns>
            <asp:EditCommandColumn EditText="编辑" CancelText="取消" UpdateText="更新"  ItemStyle-Wrap="false"/>
            <asp:BoundColumn HeaderText="au_id" SortExpression="au_id" ReadOnly="True" DataField="au_id" ItemStyle-Wrap="false"/>
            <asp:TemplateColumn HeaderText="au_lname" SortExpression="au_lname">
              <ItemTemplate>
                <asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "au_lname") %>'/>
              </ItemTemplate>
              <EditItemTemplate>
                <asp:TextBox runat="server" id="edit_LName" Text='<%# DataBinder.Eval(Container.DataItem, "au_lname") %>'/>
              </EditItemTemplate>
            </asp:TemplateColumn>
            <asp:TemplateColumn HeaderText="au_fname" SortExpression="au_fname">
              <ItemTemplate>
                <asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "au_fname") %>'/>
              </ItemTemplate>
              <EditItemTemplate>
                <asp:TextBox runat="server" id="edit_FName" Text='<%# DataBinder.Eval(Container.DataItem, "au_fname") %>'/>
              </EditItemTemplate>
            </asp:TemplateColumn>
            <asp:TemplateColumn HeaderText="phone" SortExpression="phone">
              <ItemTemplate>
                <asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "phone") %>'/>
              </ItemTemplate>
              <EditItemTemplate>
                <asp:TextBox runat="server" id="edit_Phone" Text='<%# DataBinder.Eval(Container.DataItem, "phone") %>'/>
              </EditItemTemplate>
            </asp:TemplateColumn>
            <asp:TemplateColumn HeaderText="address" SortExpression="address">
              <ItemTemplate>
                <asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "address") %>'/>
              </ItemTemplate>
              <EditItemTemplate>
                <asp:TextBox runat="server" id="edit_Address" Text='<%# DataBinder.Eval(Container.DataItem, "address") %>'/>
              </EditItemTemplate>
            </asp:TemplateColumn>
            <asp:TemplateColumn HeaderText="city" SortExpression="city">
              <ItemTemplate>
                <asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "city") %>'/>
              </ItemTemplate>
              <EditItemTemplate>
                <asp:TextBox runat="server" id="edit_City" Text='<%# DataBinder.Eval(Container.DataItem, "city") %>'/>
              </EditItemTemplate>
            </asp:TemplateColumn>
            <asp:TemplateColumn HeaderText="state" SortExpression="state">
              <ItemTemplate>
                <asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "state") %>'/>
              </ItemTemplate>
              <EditItemTemplate>
                <asp:DropDownList runat="server" SelectedIndex='<%# GetStateIndex(Container.DataItem("state")) %>' id="edit_State">
                      <asp:ListItem>CA</asp:ListItem>
                      <asp:ListItem>IN</asp:ListItem>
                      <asp:ListItem>KS</asp:ListItem>
                      <asp:ListItem>MD</asp:ListItem>
                      <asp:ListItem>MI</asp:ListItem>
                      <asp:ListItem>OR</asp:ListItem>
                      <asp:ListItem>TN</asp:ListItem>
                      <asp:ListItem>UT</asp:ListItem>
                </asp:DropDownList>
              </EditItemTemplate>
            </asp:TemplateColumn>
            <asp:TemplateColumn HeaderText="zip" SortExpression="zip">
              <ItemTemplate>
                <asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "zip") %>'/>
              </ItemTemplate>
              <EditItemTemplate>
                <asp:TextBox runat="server" id="edit_Zip" Text='<%# DataBinder.Eval(Container.DataItem, "zip") %>'/>
              </EditItemTemplate>
            </asp:TemplateColumn>
            <asp:TemplateColumn HeaderText="contract" SortExpression="contract">
              <ItemTemplate>
                <asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "contract", "{0}") %>'/>
              </ItemTemplate>
              <EditItemTemplate>
                <asp:CheckBox runat="server" id="edit_Contract" Checked='<%# DataBinder.Eval(Container.DataItem, "contract") %>'/>
              </EditItemTemplate>
            </asp:TemplateColumn>
          </Columns>    </ASP:DataGrid>  </form></body>
    </html>
      

  4.   

    Sorry,我不熟悉VB啊,再请哪位兄弟帮一下吧。
      

  5.   

    <asp:DataGrid id="grid" runat="server" AutoGenerateColumns="False" ShowFooter="True" CellPadding="4" BackColor="White" BorderWidth="1px" BorderStyle="None" BorderColor="#CC9966" Font-Size="9pt" Font-Names="宋体" Width="100%">
    <SelectedItemStyle Font-Bold="True" ForeColor="#663399" BackColor="#FFCC66"></SelectedItemStyle>
    <ItemStyle ForeColor="#330099" BackColor="White"></ItemStyle>
    <HeaderStyle Font-Bold="True" ForeColor="#FFFFCC" BackColor="#990000"></HeaderStyle>
    <FooterStyle ForeColor="#330099" BackColor="#FFFFCC"></FooterStyle>
    <Columns>
    <asp:TemplateColumn HeaderText="分类号">
    <ItemTemplate>
    <asp:Label id="lblCateID" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.CategoryID") %>'>
    </asp:Label>
    </ItemTemplate>
    <FooterStyle HorizontalAlign="Right"></FooterStyle>
    <FooterTemplate>
    <asp:LinkButton id="newCate" runat="server" CommandName="Insert">新增分类</asp:LinkButton>
    </FooterTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="分类名称">
    <ItemTemplate>
    <asp:Label id="lblCaption" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Caption") %>'>
    </asp:Label>
    </ItemTemplate>
    <FooterTemplate>
    <asp:DropDownList id="ddlCategory" runat="server" Height="20px" Width="120px" DataTextField="Caption" DataValueField="CategoryID" DataMember="ParentCategory" datasource="<%# ds %>">  // 注意这里的代码
    </asp:DropDownList>
    </FooterTemplate>
    <EditItemTemplate>
    <asp:TextBox id="tbCaption" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Caption") %>'>
    </asp:TextBox>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn>
    <ItemTemplate>
    <asp:LinkButton runat="server" Text="编辑" CommandName="Edit" CausesValidation="false"></asp:LinkButton>
    </ItemTemplate>
    <FooterTemplate>
    [分类名称]
    <asp:TextBox id="tbCaption1" runat="server"></asp:TextBox>
    </FooterTemplate>
    <EditItemTemplate>
    <asp:LinkButton runat="server" Text="更新" CommandName="Update"></asp:LinkButton>&nbsp;
    <asp:LinkButton runat="server" Text="取消" CommandName="Cancel" CausesValidation="false"></asp:LinkButton>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn>
    <ItemTemplate>
    <asp:LinkButton id="cmdDel" runat="server" Text="删除" CommandName="Delete" CausesValidation="false"></asp:LinkButton>
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </asp:DataGrid>
    --------------------------------------------------------------------------------
    private void BindGrid()
    {
    PhotoLib.PicturesDB pictures = new PhotoLib.PicturesDB();

    String tbname = "Categories";
    int len = ViewState["cateId"].ToString().Length;
    switch(len)
    {
    case 1:
    tbname = "Categories";
    break;
    case 2:
    tbname = "Sub1Category";
    break;
    case 4:
    tbname = "Sub2Category";
    break;
    }// 作为下拉列表框的数据源
    ds = pictures.GetParentCategories(ViewState["cateId"].ToString());
    // grid的数据源
    grid.DataSource = pictures.GetCategories(tbname,ViewState["cateId"].ToString());
    grid.DataBind();
    }
      

  6.   

    DropDownList DropDownList2=(DropDownList)UserInfoGrid.Items[editindex].FindControl("DropDownList2");转换成VB.net好象是:dim DropDownList2 as DropDownList=CType(UserInfoGrid.Items(editindex).FindControl("DropDownList2"),DropDownList);