protected void gvWageBase_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        TextBox dnTxtBox = (TextBox)gvWageBase.Rows[e.RowIndex].FindControl("TxtDepartName");
        string DepartName = dnTxtBox.Text;
        TextBox emTxtBox = (TextBox)gvWageBase.Rows[e.RowIndex].FindControl("TxtEmpName");
        string EmpName = emTxtBox.Text;
        TextBox pbTxtBox = (TextBox)gvWageBase.Rows[e.RowIndex].FindControl("TxtPayment");
        string PaymentBase = pbTxtBox.Text;
        TextBox PbTxtBox = (TextBox)gvWageBase.Rows[e.RowIndex].FindControl("TxtPension");
        string Pension = PbTxtBox.Text;
        TextBox FbTxtBox = (TextBox)gvWageBase.Rows[e.RowIndex].FindControl("TxtFertility");
        string Fertility = FbTxtBox.Text;
        TextBox MbTxtBox = (TextBox)gvWageBase.Rows[e.RowIndex].FindControl("TxtMedical");
        string Medical = MbTxtBox.Text;
       string SQL = "UPDATE [Crm_WagePaymentBase] SET EmpName='"+EmpName+"',DepartName='"+DepartName+"',PaymentBase='"+PaymentBase+"',PensionBase='"+PensionBase+"',FertilityBase='"+FertilityBase+"',MedicalBase='"+MedicalBase+"' ";        SqlConnection con = new SqlConnection("Server=PC-20110722DRPI\\SQLEXPRESS; Uid=sa;PWD=123;DataBase=lgcrmdb");
        SqlCommand cmd = con.CreateCommand();
        cmd.CommandText = SQL;
        
        con.Open();
        SqlTransaction tran = con.BeginTransaction();
        cmd.Transaction = tran;
        int Result = 0;        try
        {
            Result = cmd.ExecuteNonQuery();
            tran.Commit();
        }
        catch 
        {
            tran.Rollback();
        }
        finally 
        {
            con.Close();
        }
        if (Result == 1)
        {
            this.AlterMsg("更新数据成功!");
        }
        else 
        {
            this.AlterMsg("更新数据失败!");
        }
        this.gvWageBase.EditIndex = -1;
        this.BindGridView();
    }
这个代码有错吗?大家看看
提示的错误
未将对象引用设置到对象的实例。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
行 74:         string PaymentBase = pbTxtBox.Text;
行 75:         TextBox PbTxtBox = (TextBox)gvWageBase.Rows[e.RowIndex].FindControl("TxtPension");
行 76:         string Pension = PbTxtBox.Text;
行 77:         TextBox FbTxtBox = (TextBox)gvWageBase.Rows[e.RowIndex].FindControl("TxtFertility");
行 78:         string Fertility = FbTxtBox.Text;
 
帮帮忙 解决一下??

解决方案 »

  1.   

    TextBox PbTxtBox = (TextBox)gvWageBase.Rows[e.RowIndex].FindControl("TxtPension");
    这句执行结果PbTxtBox=null,也就是说没有找到控件TxtPension
      

  2.   

    看一下是否有TxtPension这个控件
      

  3.   

    有这个控件啊
    那好吧 我把前台代码也贴出来<asp:GridView ID="gvWageBase" runat="server" AutoGenerateColumns="False" 
                    Width="845px"  Height="100%" 
                    onrowcancelingedit="gvWageBase_RowCancelingEdit" EmptyDataText="NoDataToDisplay!" 
                    onrowediting="gvWageBase_RowEditing" onrowupdating="gvWageBase_RowUpdating"   >
                <Columns>
                    <asp:TemplateField >
                        <HeaderTemplate > 
                        <span class="span">
                            <asp:DropDownList ID="ddlDepart" CssClass="gvWageBase"  runat="server">
                                <asp:ListItem>部门</asp:ListItem>
                            </asp:DropDownList>
                         </span>   
                        </HeaderTemplate>
                    
                        <EditItemTemplate>
                            <asp:TextBox ID="TxtDepartName" runat="server" Text='<%# Bind("DepartName") %>'></asp:TextBox>
                        </EditItemTemplate>                    <ItemTemplate>
                       <asp:Label ID="Label1" runat="server" Text='<%# Bind("DepartName") %>'></asp:Label>
                        </ItemTemplate>
                        <HeaderStyle BackColor="#cccccc" Width="115px" Height="20px"/>
                        <ItemStyle BackColor="#cccccc" Width="115px" Height="20px"/>
                    </asp:TemplateField>
                    
                    <asp:TemplateField>
                        <HeaderTemplate>
                            <asp:DropDownList ID="ddlEmpName" CssClass="gvWageBase"  runat="server">
                            <asp:ListItem>姓名</asp:ListItem>
                            </asp:DropDownList>
                        </HeaderTemplate>
                        <HeaderStyle BackColor="#cccccc" Width="115px" Height="20px"/>
                        <EditItemTemplate>
                            <asp:TextBox ID="TxtEmpName" runat="server" Text='<%# Bind("EmpName") %>'></asp:TextBox>
                        </EditItemTemplate>                    <ItemTemplate>
                            <asp:Label ID="Label2" runat="server" Text='<%# Bind("EmpName") %>'></asp:Label>
                        </ItemTemplate>
                        <ItemStyle BackColor="#cccccc" Width="115px" Height="20px"/>
                    </asp:TemplateField>
                    
                    <asp:TemplateField>
                    <HeaderTemplate>
                       <asp:DropDownList ID="ddlPayBase" CssClass="gvWageBase"  runat="server">
                            <asp:ListItem>缴费基数</asp:ListItem>
                            </asp:DropDownList>
                    </HeaderTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="TxtPayment" runat="server" Text='<%# Bind("PaymentBase") %>'></asp:TextBox>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label3" runat="server" Text='<%# Bind("PaymentBase") %>'></asp:Label>
                        </ItemTemplate>
                        <HeaderStyle BackColor="#cccccc" Width="115px" Height="20px"/>
                        <ItemStyle BackColor="#cccccc" Width="115px" Height="20px"/>
                    </asp:TemplateField>
                    
                    <asp:TemplateField>
                    <HeaderTemplate>
                        <asp:DropDownList ID="ddlPensionBase" CssClass="gvWageBase"  runat="server">
                            <asp:ListItem>养老基数</asp:ListItem>
                            </asp:DropDownList>
                    </HeaderTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="TxtPensione" runat="server" Text='<%# Bind("PensionBase") %>'></asp:TextBox>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label4" runat="server" Text='<%# Bind("PensionBase") %>'></asp:Label>
                        </ItemTemplate>
                        <HeaderStyle BackColor="#cccccc" Width="115px" Height="20px"/>
                        <ItemStyle BackColor="#cccccc" Width="115px" Height="20px"/>
                    </asp:TemplateField>
                    
                    <asp:TemplateField>
                        <HeaderTemplate>
                        <asp:DropDownList ID="ddlFertilityBase" CssClass="gvWageBase"  runat="server">
                            <asp:ListItem>生育基数</asp:ListItem>
                            </asp:DropDownList>
                    </HeaderTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="TxtFertility" runat="server" Text='<%# Bind("FertilityBase") %>'></asp:TextBox>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label5" runat="server" Text='<%# Bind("FertilityBase") %>'></asp:Label>
                        </ItemTemplate>
                        <HeaderStyle BackColor="#cccccc" Width="115px" Height="20px"/>
                        <ItemStyle BackColor="#cccccc" Width="115px" Height="20px"/>
                    </asp:TemplateField>
                    
                    <asp:TemplateField >
                        <HeaderTemplate>
                       
                        <asp:DropDownList ID="ddlMedicalBase" CssClass="gvWageBase"  runat="server">
                            <asp:ListItem>医疗基数</asp:ListItem>
                            </asp:DropDownList>
                      
                    </HeaderTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="TxtMedical" runat="server" Text='<%# Bind("MedicalBase") %>'></asp:TextBox>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label6" runat="server" Text='<%# Bind("MedicalBase") %>'></asp:Label>
                        </ItemTemplate>
                        <HeaderStyle BackColor="#cccccc" Width="115px" Height="20px"/>
                        <ItemStyle BackColor="#cccccc" Width="115px" Height="20px"/>
                    </asp:TemplateField>
                    <asp:CommandField HeaderText="操作/行为" ShowEditButton="True" ButtonType="Button" 
                        HeaderStyle-BorderColor="#cccccc" ItemStyle-BackColor="#cccccc">
                        <HeaderStyle BorderColor="#CCCCCC" />
                        <ItemStyle BackColor="#CCCCCC" />
                    </asp:CommandField>
                  
                </Columns>
            </asp:GridView>
      

  4.   

    TextBox PbTxtBox = (TextBox)gvWageBase.Rows[e.RowIndex].FindControl("TxtPension");
    行 76: string Pension = PbTxtBox.Text;以前遇到过同样的错误,原因是没找到控件
    你寻找控件的时候要判断是否为null,这个是必须的!
    代码改动如下:
    if(PbTxtBox  != null)

    string Pension = PbTxtBox.Text;}
      

  5.   

    <asp:TextBox ID="TxtPensione" runat="server" Text='<%# Bind("PensionBase") %
                               ^^似乎是错字问题?
      

  6.   

    补充:
    後台是TxtPension 
    前台是TxtPensione