2009-08-08 17 views
5

Aşağıda benim saklı yordamım var.Kayıtlı yordamın sonucu olarak veri kaydı nasıl alınır

ALTER PROCEDURE SP_GetModels 
(
    @CategoryID bigint 
) 
AS 
BEGIN 
    Select ModelID,ModelName From Model where [email protected] 
END 

i olan i modelName içeren datareader nesnesi bağlamak zorunda I DropDownList sahip

public SqlConnection conn; 
public SqlDataReader GetModels() 
     { 


     DataTable dt = new DataTable(); 
    public void DbConnection() 
      { 
       conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SampleCs"].ConnectionString); 
       conn.Open(); 
      } 
       DbConnection(); 
       SqlCommand cmd = new SqlCommand("SP_GetModels", conn); 
       cmd.CommandType = CommandType.StoredProcedure; 
       cmd.Parameters.Add("@CategoryID", SqlDbType.BigInt, 10).Value = CategoryID; 
       // SqlDataAdapter madap = new SqlDataAdapter(cmd, conn); 
       SqlDataReader dreader= cmd.ExecuteReader(); 

       //madap.Fill(dt); 
       return dreader; 
      } 

olarak kodda saklı yordam çağrı am. Ayrıca hangi üye (mülk) belirtmek gerekir

MyDropDownList.DataSource = GetModels(); 
MyDropDownList.DataTextField = "ModelName"; 
MyDropDownList.DataValueField = "ModelID"; 

gidiyor: nasıl ben datareader olarak

cevap

2

doğrudan böyle açılır listeden, SqlDataReader bağlamak mümkün olmalıdır DropDownList veri kaynağı ayarlayabilirsiniz görüntülenecek (DataTextField) ve açılan listeden (DataValueField) bir giriş seçildiğinde hangisi değer olarak kullanılacak.

Ben şiddetle SqlDataReader kapatın o sahip olduğunuz alanlar ve gereğini yapacak bir Model sınıfın örneklerini oluşturmak, GetModels() prosedürde SqlDataReader veri yakala ve sonra bir List<Model> ve zamanda geri öneriyoruz Bu listeyi açılır listeye bağlayın. SqlDataReader'ı doğrudan bağlamadan daha iyi!

public class Model 
{ 
    public int ModelID { get; set; } 
    public string ModelName { get; set; } 
} 

Ve GetModels() içinde

: getirirken

public List<Model> GetModels() 
{ 
    List<Model> result = new List<Model>(); 

    using(SqlConnection conn = new SqlConnection(ConfigurationManager. 
            ConnectionStrings["SampleCs"].ConnectionString)) 
    { 
    using(SqlCommand cmd = new SqlCommand("SP_GetModels", conn)) 
    { 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.Add("@CategoryID", SqlDbType.BigInt, 10).Value = CategoryID; 

     conn.Open(); 

     using(SqlDataReader dreader = cmd.ExecuteReader()) 
     { 
      while(dreader.Read()) 
      { 
       Model workItem = new Model() 
           { ModelID = dreader.GetInt(0), 
            ModelName = dreader.GetString(1) }; 
       result.Add(workItem); 
      } 
      reader.Close(); 
     } 

     conn.Close(); 
    } 
    } 
    return result; 
} 

Marc

1

Önce, otomatik olarak kapanacaktır DataReader emin olun:

SqlDataReader dreader= cmd.ExecuteReader(CommandBehavior.CloseConnection); 

Sonra bağlama için bir listeye:

DropDownList1.DataSource = GetModels(); 
DropDownList1.DataValueField = "ModelID"; 
DropDownList1.DataTextField = "ModelName"; 
DropDownList1.DataBind(); 
1

SqlDataReader'ın IListSource'dan miras aldığını sanmıyorum ve doğru bir şekilde hatırlıyorsam, yalnızca veri kaynağında IListSource'dan sınıfları kullanabilirsiniz. DataTable'ı almak istiyorsanız, bunun yerine komutu çalıştırmak için SqlDataAdapter kullanmalısınız. Marc'ın çözümü genişletmek:

public void BindData() 
{ 
    dropDownList1.DataSource = LoadModelData(); 
    dropDownList1.DataValueField = "ModelID"; 
    dropDownList1.DataTextField = "ModelName"; 
    dropDownList1.DataBind(); 
} 
public DataTable LoadModelData() 
{ 
    DataSet dataset = new DataSet(); 
    using (conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SampleCs"].ConnectionString)) 
    { 
     SqlCommand cmd = new SqlCommand("SP_GetModels", conn); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.Add("@CategoryID", SqlDbType.BigInt, 10).Value = CategoryID; 
     SqlDataAdapter adapter = new SqlDataAdapter(cmd, conn); 
     adapter.Fill(dataset); 
    } 
    return dataset.Tables[0]; 
} 
0

nasıl datatable yanında t sql çıktı param olması hakkında

SqlDataReader dr = cmd.ExecuteReader(); 
      while (dr.Read()) 
      { 
       DropDownList1.Items.Add(new ListItem(dr["ModelName"].ToString(), dr["ModelID"].ToString())); 

      } 
      con.Close(); 
10
private void PopDataBaseName() 
{ 
    try 
    { 
     SqlCommand cmd = new SqlCommand("sp_generate_report", con); 
     cmd.Parameters.Add("@TABLE_NAME", SqlDbType.VarChar,100).Value = TextBox1.Text; 
     cmd.CommandType = CommandType.StoredProcedure; 
     SqlDataAdapter adp = new SqlDataAdapter(cmd); 
     DataSet ds = new DataSet(); 
     adp.Fill(ds); 

    } 
    catch (Exception ex) 
    { 

    } 
} 
+0

ne kimse bu haber? çıkış paramı nasıl alınır? Mümkün mü? Numune? –

İlgili konular