0

我正在尝试将新记录添加到我的表中tblEmployee。这是我的代码:

        cb = new SqlCommandBuilder(daEmp);

        DataRow dRow = dsEmp.Tables["tblEmployee"].NewRow();
        dRow["EmployeeID"] = txtID.Text;
        dRow["Lname"] = txtLname.Text;
        dRow["Fname"] = txtFname.Text;
        dRow["Mname"] = txtMname.Text;
        dRow["Address"] = txtAddress.Text;
        dRow["Email"] = txtEmail.Text;
        dRow["Phone"] = Convert.ToInt64(txtPhone.Text);
        dRow["Jobtitle"] = txtJobtitle.Text;
        dRow["Salary"] = txtSalary.Text;
        dRow["DeptID"] = drpDepartments.SelectedValue;

        dsEmp.Tables["tblEmployee"].Rows.Add(dRow);
        daEmp.Update(dsEmp, "tblEmployee");
        dsEmp.Tables["tblEmployee"].AcceptChanges();

我在这一行收到此错误消息:dRow["Phone"] = txtPhone;。它说Unable to cast object of type 'System.Web.UI.WebControls.TextBox' to type 'System.IConvertible'.Couldn't store <System.Web.UI.WebControls.TextBox> in Phone Column. Expected type is Int64.

文本框的代码:

<asp:TextBox ID="txtPhone" runat="server"></asp:TextBox>

我的数据库上列的数据类型Phone是 int 但我将其更改为 bigint 并且仍然得到相同的错误。似乎是什么问题?

顺便说一句,我正在使用 C# ASP.NET。

4

6 回答 6

1

使用 txtPhone.Text 获取文本框中的值,而不是文本框对象本身。

于 2013-11-13T07:28:43.510 回答
1

如果该Phone字段是数字字段,那么您应该:

dRow["Phone"] = Convert.ToInt64(txtPhone.Text);
于 2013-11-13T07:29:46.623 回答
0

只需通过添加 txtPhone.text 将您的手机转换为文本。实际上,您应该为 webforms 中的所有字段值执行此操作,并且还需要对每个表单字段进行适当的验证,这是一个很好的做法..

于 2013-11-13T07:37:02.243 回答
0

尝试这个

protected void btnAdd_Click(object sender, EventArgs e) {
        cb = new SqlCommandBuilder(daEmp);

        DataRow dRow = dsEmp.Tables["tblEmployee"].NewRow();
        dRow["Lname"] = txtLname.Text;
        dRow["Fname"] = txtFname.Text;
        dRow["Mname"] = txtMname.Text;
        dRow["Address"] = txtAddress.Text;
        dRow["Email"] = txtEmail.Text;
        dRow["Phone"] = txtPhone.Text;
        dRow["Jobtitle"] = txtJobtitle.Text;
        dRow["Salary"] = txtSalary.Text;
        dRow["DepartmentID"] = drpDepartments.SelectedValue;

        dsEmp.Tables["tblEmployee"].Rows.Add(dRow);
        daEmp.Update(dsEmp, "tblEmployee");
        dsEmp.Tables["tblEmployee"].AcceptChanges();

    }
于 2013-11-13T07:31:03.653 回答
0

拳头在任何.Text地方都使用该属性,对于电话转换,它是整数

protected void btnAdd_Click(object sender, EventArgs e) 
{
    cb = new SqlCommandBuilder(daEmp);

    DataRow dRow = dsEmp.Tables["tblEmployee"].NewRow();
    dRow["Lname"] = txtLname.Text;
    dRow["Fname"] = txtFname.Text;
    dRow["Mname"] = txtMname.Text;
    dRow["Address"] = txtAddress.Text;
    dRow["Email"] = txtEmail.Text;
    dRow["Phone"] = Convert.ToInt32(txtPhone.Text);
    dRow["Jobtitle"] = txtJobtitle.Text;
    dRow["Salary"] = txtSalary.Text;
    dRow["DepartmentID"] = drpDepartments.SelectedValue;
    dsEmp.Tables["tblEmployee"].Rows.Add(dRow);
    daEmp.Update(dsEmp, "tblEmployee");
    dsEmp.Tables["tblEmployee"].AcceptChanges();
}
于 2013-11-13T07:31:55.897 回答
0

用于txtPhone.Text分配电话号码的值。

于 2013-11-13T07:29:47.813 回答