<asp:GridView runat="server" id="gv" DataKeyNames="CustomerID" 
            AutoGenerateColumns="False" onrowdatabound="gv_RowDataBound" 
            onrowcancelingedit="gv_RowCancelingEdit" onrowdeleting="gv_RowDeleting" 
            onrowediting="gv_RowEditing" onrowupdating="gv_RowUpdating">
           <Columns>
               <asp:HyperLinkField DataNavigateUrlFields="CustomerID" 
                   DataNavigateUrlFormatString="./CustomerDetails.aspx?CustomerID={0}" 
                   DataTextField="CustomerID" HeaderText="客户编号" />
               <asp:BoundField DataField="CompanyName" HeaderText="客户名称" ReadOnly="True" 
                   SortExpression="CompanyName" />
               <asp:BoundField DataField="ContactName" HeaderText="联系人" 
                   SortExpression="ContactName" />
               <asp:BoundField DataField="ContactTitle" HeaderText="联系主题" 
                   SortExpression="ContactTitle"/>
               <asp:TemplateField HeaderText="城市">
                   <ItemTemplate>
                       <asp:DropDownList runat="server" ID="cityDpt"></asp:DropDownList>
                   </ItemTemplate>
               </asp:TemplateField>
               <asp:CommandField ButtonType="Button" ShowEditButton="True" />
               <asp:CommandField ButtonType="Button" ShowDeleteButton="True" />
           </Columns>
        </asp:GridView>C#:  protected void gv_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            
            string customerId = ((HyperLink)gv.Rows[e.RowIndex].Cells[0].Controls[0]).Text;
            string companyName = gv.Rows[e.RowIndex].Cells[1].Text;
            
            string contactName = gv.Rows[e.RowIndex].Cells[2].Text;
            string contactTitle = gv.Rows[e.RowIndex].Cells[3].Text;
            string city = (gv.Rows[e.RowIndex].FindControl("cityDpt") as DropDownList).SelectedItem.Text;        }companyId和companyName都能获取到值,但是contactName和contactTitle都获取不到,为什么啊

解决方案 »

  1.   

    直接用string contactName=gv.Rows[e.RowIndex]["ContactName"].ToString()呢?
      

  2.   

    放个控件,然后Find一下就OK了!
      

  3.   

    也就是把找不到的那两列改成: string city = (gv.Rows[e.RowIndex].FindControl("cityDpt") as DropDownList).SelectedItem.Text;
    你这样的就可以了!
      

  4.   

    string contactName = ((Textbox)gv.Rows[e.RowIndex].Cells[2].Controls[0]).Text;            string contactTitle = ((Textbox)gv.Rows[e.RowIndex].Cells[3].Controls[0]).Text;
      

  5.   

    在RowDataBound里是否能获取到值,使用模板列看看
      

  6.   

    http://blog.csdn.net/xianfajushi/archive/2008/11/30/3413317.aspx