2016-10-06 4 views
0

그래서 필자는 그래서 나의 무지 :(으로 조금 베어, (약간의 자바를 사용하고,하지만 지금은 프로젝트가 ASP를 요구하는) 새로운 ASP 개발자로 시작 아약스 텍스트 상자에 표시 동적.드롭 다운리스트는 객체를 검색하고

내가 뭘 하려는지 SQL 서버에있어 테이블에서 동적 드롭 다운 목록을 만드는 것입니다 그리고 목록에 선택한 목록에 따라 txt 편집기에 대한 정보를 보여줍니다 (이론적으로 너무 열심히 shouldnt지만, 그냥 시작한 이후 , 그냥 그렇게 쉽게 보이지 않는 것). 나는 그것에 대한 엔티티, 그것에 대한 데이터 및 그것에 대한 bussiness 논리와 상호 연결을 만들었습니다. (이미 DB에서 읽고 검색하고 있습니다.) 내가 열심히하는 일.

Entity.Messages

public class Messages 
    { 
     public int id { get; set; } 

     public string title { get; set; } 

     public string subject { get; set; } 
     public string body { get; set; } 
     public string createdBy { get; set; } 


     public Messages() 
     { 
      id = 0; 
      title = ""; 
      subject = ""; 
      body = ""; 
      createdBy = ""; 
     } 

     public Messages(int idMessages) 
     { 
      idMessages = id; 
      title = ""; 
      subject = ""; 
      body = ""; 
      createdBy = ""; 
     } 
    } 
} 

Data.Messages

public class Messages : Data 
{ 

    public Messages() : base() 
     { 

     } 

    public List<Entity.Messages> GetAll() 
    { 
     List<Entity.Messages> message = new List<Entity.Messages>(); 
     //SQL Command para llamar el stored procedure 
     SqlCommand comando = new SqlCommand("dbo.[Messages_GetAll]", base.Db); 
     //Ejecuta consulta 
     DataTable dtItem = base.Execute(comando); 
     //Transforma el Datatable en una lista de proyectos. 
     foreach (DataRow dr in dtItem.Rows) 
      message.Add(GetFromDataRow(dr)); 

     return message; 
    } 

    public Entity.Messages GetById(int id) 
    { 
     Entity.Messages m = new Entity.Messages(); 
     //SQL Command para llamar el stored procedure 
     SqlCommand comando = new SqlCommand("dbo.[Messages_GetById]", base.Db); 
     //parametros del store procedure 
     SqlParameter spKey = new SqlParameter("@Id", System.Data.SqlDbType.Int); 
     spKey.Value = id; 
     comando.Parameters.Add(spKey); 
     //Ejecuta consulta 
     DataTable dt = base.Execute(comando); 
     if (dt.Rows.Count > 0) 
      m = GetFromDataRow(dt.Rows[0]); 
     return m; 
    } 

    private ASF.HC.JobApplication.Entity.Messages GetFromDataRow(DataRow dr) 
    { 
     Entity.Messages m = new Entity.Messages(); 
     m.id = dr["Id"] == DBNull.Value ? -1 : int.Parse(dr["Id"].ToString()); 
     m.title = dr["Title"] == DBNull.Value ? "" : dr["Title"].ToString(); 
     m.subject = dr["Subject"] == DBNull.Value ? "" : dr["Subject"].ToString(); 
     m.body = dr["Body"] == DBNull.Value ? "" : dr["Body"].ToString(); 
     m.createdBy = dr["createdBy"] == DBNull.Value ? "" : dr["createdBy"].ToString(); 
     return m; 
    } 
} 

BO.Messages

public class Messages 
    { 

     public Entity.Messages GetByID(int id) 
     { 
      Data.Messages oMessage = new Data.Messages(); 
      return oMessage.GetById(id); 
     } 
     public List<Entity.Messages> GetAll() 
     { 
      Data.Messages oMessage = new Data.Messages(); 
      return oMessage.GetAll(); 
     } 

그리고 임을 표시하려고, 나는 DropDownList로 볼 경우 잘 나는 목록과 참조 개체는 제목이지만 표시하고 싶습니다.

MEssage.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Messages.aspx.cs" Inherits="ASF.HC.JobApplication.Admin.Messages" %> 
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="ajaxToolkit" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
    <h2>Messages</h2>  
    <asp:ScriptManager ID="ScriptManager2" runat="server"></asp:ScriptManager> 
    <legend>Pick the template to use:</legend> 
    <asp:dropdownlist id ="ddlTemplate" runat ="server" Height="38px" Width="397px"> 
        <asp:listitem value ="1"> Juan Valdez </asp:listitem > 
        <asp:listitem Value ="2"> Querido bebe</asp:listitem> 
        </asp:dropdownlist >  
    <p>&nbsp;</p> 
       <asp:TextBox ID ="txtDetails" runat="server" Width="600px" Height="300px" Visible="true" ></asp:TextBox> 
      <ajaxToolkit:HtmlEditorExtender ID="TextBox1_HtmlEditorExtender" runat="server" TargetControlID="txtDetails" 
       EnableSanitization="false" DisplaySourceTab="true" > 
      </ajaxToolkit:HtmlEditorExtender> 
</asp:Content> 

Messages.aspx.cs

public partial class Messages : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      loadList(); 
     } 

     public void loadList() 
     { 
      BO.Messages template = new BO.Messages(); 
      ddlTemplate.DataSource = template.GetAll(); 
      ddlTemplate.DataBind(); 
     } 
    } 
} 

임 단계적으로 이동하려고하지만, 첫째 나는 값이 아닌 객체를보고 싶어하고,에 따라 어떤 Body 필드가 Ajax의 텍스트 필드에 표시되도록 선택합니다. 하지만 가장 중요한 것은 드롭 다운 목록에 제목 필드를 표시하는 것입니다. (

편집 : 개체 대신 모든 제목을 표시해야합니다. 제목을 선택 아약스에서이 텍스트에 표시하도록?처럼 동적으로? 어떤 점이 크게 감상 할 수있다.

어떤 도움이나 포인터하는 것은 크게 감상 할 수있다.

감사합니다!

+1

데이터 값 필드와 datatext 필드를 설정해야한다고 생각합니다. 시작하기 좋은 장소 인 것처럼 보입니다. http://stackoverflow.com/questions/15205380/how-to-bind-a-drop-down-control-to-a-data-source-in-asp-net –

+0

고마워요. 그러나 나는 그들이 엔티티에 설정되어 있다고 생각 했으므로 액세스가 올바른 것이어야합니까? –

+1

바인딩 할 필요가있는 엔티티의 필드는 드롭 다운 목록에서 제어해야합니다. 너 그거 해봤 니? –

답변

0

분명히, 필요한 모든 것은 datavalue와 datatext 필드를 매핑하는 것입니다.