2014-12-25 6 views
5

Ich versuche, Textboxwert basierend auf einem anderen Textfeld zu füllen, aber ich kann nicht die andere Textbox auffüllen. Ich bin meinen Code teilen bitte leite mich mit bester LösungFüllen Sie den Textfeldwert basierend auf einem anderen Textfeld aus der Datenbank

Aktion Methode:

public JsonResult AgreementNo(string id) 
{ 
    string no; 
    string _str = id; 
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ToString()); 
    SqlCommand cmd = new SqlCommand("SELECT top(1) num from loan where [email protected]", con); 
    cmd.Parameters.AddWithValue("@str",id); 
    cmd.CommandType = CommandType.Text; 
    DataSet ds = new DataSet(); 
    SqlDataAdapter da = new SqlDataAdapter(cmd); 
    da.Fill(ds); 
    no = ds.Tables[0].Rows[0]["num"].ToString(); 
    return Json(new 
     { 
     no = no 
     }, JsonRequestBehavior.AllowGet); 
    } 

Script:

$("#BarrowerName").blur(function() {      
$.ajax({      
url: '@Url.Action("AgreementNo", "Home")', 
// url: '@Url.Action("AgreementNo", "Home")', 
dataType: "json", 
data: JSON.stringify({ id: $("#BarrowerName").val() }), 
type:"POST", 
async: false, 
contentType: 'application/json,charset=utf-8', 
sucess: function (data) { 
$("#AgreementNo").val(data.no) 
response(data); 
} 
});       
}); 

Es Werfen Sie die Fehler wie: Fehler bei der Konvertierung, wenn die nvarchar-Wert-Umwandlungs '' zum Datentyp int.

+0

werden Sie korrekten Wert im Parameter „string id“ zu bekommen? ich denke ID sollte int sein. – Sandeep

+0

Ich habe den Textbox-Wert in String-ID – meena

+0

Was ist der Typ der ID in der Datenbank abgelegt? wenn es int ist, versuche cmd.Parameters.AddWithValue ("@ str", Convert.ToInt32 (id)); – Sandeep

Antwort

2

Zu allererst Ihr Fehler ist in dieser Zeile: -

cmd.Parameters.AddWithValue("@str",id); 

Da Sie versuchen, einen ganzzahligen Wert zu NVARCHAR Säule laufen, bitte Ändern Sie Ihren Code wie folgt: -

cmd.Parameters.Parameters.Add("@str",SqlDbType.NVarChar).Value = id; 

Bitte lesen Sie dies: - Can we stop using AddWithValue

Jetzt, sobald das behoben ist, ändern Sie Ihren jQuery-Code von sucess zu success und es sollte funktionieren!

Abgesehen davon, verwenden using Anweisung automatisch Ihre Wertsachen Ressourcen so etwas wie diese zu entsorgen: -

string CS = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; 
using(SqlConnection con = new SqlConnection(CS)) 
using(SqlCommand cmd = new SqlCommand("SELECT top(1) num from loan where [email protected]", con)) 
{ 
    cmd.Parameters.Parameters.Add("@str",SqlDbType.NVarChar).Value = id; 
    cmd.CommandType = CommandType.Text; 
    DataSet ds = new DataSet(); 
    SqlDataAdapter da = new SqlDataAdapter(cmd); 
    da.Fill(ds); 
    no = ds.Tables[0].Rows[0]["num"].ToString(); 
    return Json(new 
     { 
     no = no 
     }, JsonRequestBehavior.AllowGet); 
} 
+0

Ich habe Just repalce Erfolg zum Erfolg – meena

+0

@meena - Yup nur darauf achten, während der Arbeit mit JS als einfache Fehler sind anfällig für Fehler :) –

+1

kk und thanku sehr viel – meena

2

Sie übergeben eine string zu Parameters.AddWithValue Methode, aber int wird erwartet. Konvertieren id Variable zu int.

int intID = int.Parse(id); 

SqlCommand cmd = new SqlCommand("SELECT top(1) num from loan where [email protected]", con); 
cmd.Parameters.AddWithValue("@str", intID); 

EDIT

Hier komplette Code, den Sie

public JsonResult AgreementNo(string id) 
{ 
    string no; 
    int intId = int.Parse(id); 
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ToString()); 
    SqlCommand cmd = new SqlCommand("SELECT top(1) num from loan where [email protected]", con); 
    cmd.Parameters.AddWithValue("@str", intId); 
    cmd.CommandType = CommandType.Text; 
    DataSet ds = new DataSet(); 
    SqlDataAdapter da = new SqlDataAdapter(cmd); 
    da.Fill(ds); 
    no = ds.Tables[0].Rows[0]["num"].ToString(); 
    return Json(new 
     { 
     no = no 
     }, JsonRequestBehavior.AllowGet); 
    } 
} 

Kopieren/Einfügen kann aber gibt es eine bessere Lösung, wenn Sie ganze Zahl id in AgreementNo(string id) Verfahren erwarten.

Gerade Änderung Parametertyp int:

public JsonResult AgreementNo(int id) 
+0

Hier ist Id Textfeld Wert ie., String – meena

+0

Ich möchte ein anderes Textfeld Wert ist int – meena

+0

mit meinem ich habe den Wert in Nein, aber in einem anderen Textfeld Wert ist nicht verbindlich – meena

Verwandte Themen