2013-09-27 1 views
0

Lorsque j'essaie de développer le défilement infini, je suis confronté au problème appelé connection string is not initialized, mais mes autres pages fonctionnent correctement avec la même chaîne de connexion. Je vais partager ma page pour que quelqu'un puisse m'aider à me dire ce qui ne va pas. Je pense qu'il est facile de résoudre mon problème pour quelqu'un d'expérience.La chaîne de connexion n'est pas initialisée

mes DataClass.cs qui est dans le dossier App.data:

public class DataClass 
{ 
public DataClass() 
{ 
} 
/// <summary> 
/// return rows depend on position 
/// if you need 10th to 20th you need to pass start=10 and end=20 
/// </summary> 
/// <param name="start">database start position of one row</param> 
/// <param name="next">database end position of one row</param> 
/// <returns></returns> 
public string GetAjaxContent(int start, int end) 
{ 
    string result = string.Empty; 
    //adding sp params with values in Dictionary entry. 
    Dictionary<string, object> keyValPair = new Dictionary<string, object>(); 
    keyValPair.Add("@start", start); 
    keyValPair.Add("@next", end); 

    DBHelper DBHelper = new DBHelper(); 
    //passing the Stored Procedure name and keyvalue pair 
    DataTable dataTable = DBHelper.GetTable("spuserdata", keyValPair); 
    if (dataTable.Rows.Count > 0) 
    { 
     for (int i = 0; i < dataTable.Rows.Count; i++) 
     { 
      result += string.Format(@"<tr> 
                <td> 
                 <table> 
                  <tr> 
                   <td style='width:50px;'>{0}</td><td style='width:400px;'>{1}</td><td style='width:150px;'>{2}</td> 
                  </tr> 
                 </table> 
                </td> 
               </tr>", dataTable.Rows[i][0].ToString(), dataTable.Rows[i][1].ToString(), dataTable.Rows[i][2].ToString()); 
     } 

    } 
    //this string is going to append on Datalist on client. 
    return result; 
} 
/// <summary> 
/// function to bind data on page load 
/// </summary> 
/// <returns></returns> 
public DataTable FirstTenRecords() 
{ 
    Dictionary<string, object> keyValPair = new Dictionary<string, object>(); 
    keyValPair.Add("@start", 0); 
    keyValPair.Add("@next", 10); 

    DBHelper DBHelper = new DBHelper(); 
    DataTable dataTable = DBHelper.GetTable("spuserdata", keyValPair); 
    return dataTable; 
} 
    } 



    public class Provider 
{ 
public static SqlConnection GetConnection() 
{ 
    return new SqlConnection(ConfigurationManager.AppSettings["conn"]); 
} 
    } 

    public class DBHelper 
    { 
public DBHelper() 
{ 


} 


public DataTable GetTable(string SPName, Dictionary<string, object> SPParamWithValues) 
{ 
    SqlConnection conn; 
    SqlCommand cmd; 
    SqlDataAdapter adapter; 

    DataTable dataTable = new DataTable(); 

     conn = Provider.GetConnection(); 
     //open DB connection 
     conn.Open(); 
     cmd = new SqlCommand(); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Connection = conn; 
     cmd.CommandText = SPName; 
     foreach (KeyValuePair<string, object> paramValue in SPParamWithValues) 
     { 
      cmd.Parameters.AddWithValue(paramValue.Key, paramValue.Value); 
     } 
     adapter = new SqlDataAdapter(cmd); 
     adapter.Fill(dataTable); 


    return dataTable; 
} 
} 

    and my handlerr.aspx is 
using System; 
using System.Web; 

public class Handler : IHttpHandler { 

public void ProcessRequest(HttpContext context) 
{ 
    string startQstring = context.Request.QueryString["start"]; 
    string nextQstring = context.Request.QueryString["next"]; 
    //null check 
    if ((!string.IsNullOrWhiteSpace(startQstring)) && (!string.IsNullOrWhiteSpace(nextQstring))) 
    { 
     //convert string to int 
     int start = Convert.ToInt32(startQstring); 
     int next = Convert.ToInt32(nextQstring); 

     //setting content type 
     context.Response.ContentType = "text/plain"; 
     DataClass data = new DataClass(); 
     //writing response 
     context.Response.Write(data.GetAjaxContent(start, next)); 
    } 
} 
public bool IsReusable { 
    get { 
     return false; 
    } 
} 

} 
+0

Est-ce 'ConfigurationManager.AppSettings [" conn "]' le problème concret? – Esteban

+0

désolé monsieur, je ne vous ai pas. Vous s'il vous plaît expliquez-moi clairement – user2772861

+0

@ user2772861 Vous avez dit que cela fonctionne dans d'autres pages. Pourriez-vous montrer un code de travail, afin que nous puissions voir la différence? –

Répondre

0

Essayez de changer SqlConnection(ConfigurationManager.AppSettings["conn"]); pour SqlConnection(ConfigurationManager.ConnectionStrings["conn"]);. En plus de cela, je ne vois rien de bizarre dans votre code. S'il vous plaît envisager de visualiser les commentaires et de fournir plus d'informations.

Questions connexes