2013-11-13 7 views
0

Я пытаюсь добавить новые записи в таблицу tblEmployee. Это мой код:Вставить новое значение в таблицу C# ASP.NET

 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.

+0

попытайтесь изменить его на строку и используйте 'textbox.Text', чтобы получить значение. Или, если вы все еще хотите использовать телефон как 'int', используйте' Convert.ToInt64' на 'txtPhone.Text' –

+0

Другая ошибка' Column 'EmployeeID' не разрешает ошибки. Ошибка в этой строке 'dsEmp.Tables [" tblEmployee "] .Rows.Add (dRow); ' – user2971155

+0

Спасибо всем за вашу помощь! Сейчас все работает. – user2971155

ответ

1

Если Phone поля является числом, то вы должны:

dRow["Phone"] = Convert.ToInt64(txtPhone.Text); 
+0

Как насчет типа данных о деньгах, что я должен использовать? – user2971155

+0

Я думаю 'decimal' –

+0

Другая ошибка' Column 'EmployeeID' не разрешает null.' Ошибка в этой строке 'dsEmp.Tables [" tblEmployee "]. Rows.Add (dRow);' – user2971155

1

Используйте txtPhone.Text, чтобы получить значение в текстовом поле вместо самого объекта текстового поля.

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(); 

    } 
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(); 
} 
0

Просто бросить свой телефон в текст, добавив txtPhone.text. На самом деле вы должны сделать это для всех значений полей из веб-форм, а также для правильной проверки для каждого поля формы это хорошая практика.

Смежные вопросы