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;
帮帮忙 解决一下??
这句执行结果PbTxtBox=null,也就是说没有找到控件TxtPension
那好吧 我把前台代码也贴出来<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>
行 76: string Pension = PbTxtBox.Text;以前遇到过同样的错误,原因是没找到控件
你寻找控件的时候要判断是否为null,这个是必须的!
代码改动如下:
if(PbTxtBox != null)
{
string Pension = PbTxtBox.Text;}
^^似乎是错字问题?
後台是TxtPension
前台是TxtPensione