【问题标题】:Dropdownlist just retrieving objects and dynamically show in Ajax Text box下拉列表仅检索对象并在 Ajax 文本框中动态显示
【发布时间】:2016-10-06 20:42:02
【问题描述】:

所以我开始作为一个新的 ASP 开发人员(使用 Java 有点,但现在项目需要 ASP),所以我的无知有点暴露:(。

我要做的是从我在 SQL SERVER 中获得的表中创建一个动态下拉列表,并根据您在列表中选择的内容显示 txt 编辑器上的信息(理论上不应该那么难,但因为我刚开始,似乎并不那么容易)。我为它创建了实体、数据和业务逻辑以及互连(它已经在从数据库读取和检索,但只是一个列表)。这就是,我正在努力做的事情。

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 = "";
        }
    }
}

数据.消息

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.消息

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,而且我看到了带有对象的列表,但我想显示的是标题。

消息.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();
        }
    }
}

我试图一步一步地走,但首先我想查看值而不是对象,并根据我选择查看显示在 Ajax 上的文本字段上的 Body 字段。但首先,也是最重要的,在下拉列表中显示标题字段:(

编辑:所以我必须显示标题而不是所有对象。但是现在,你们知道一旦我选择了标题,就可以将它显示在来自 ajax 的文本上吗?喜欢动态的?任何一点将不胜感激。

任何帮助或指针将不胜感激。

谢谢!

【问题讨论】:

  • 我认为您需要设置 datavalue 字段和 datatext 字段。这看起来是个不错的起点:stackoverflow.com/questions/15205380/…
  • 谢谢伙计。但我认为它们是设置在实体上的,因此应该可以访问吧?
  • 您需要告诉下拉列表控制它需要绑定到的实体中的哪些字段。你试过吗?

标签: sql asp.net ajax drop-down-menu asp.net-ajax


【解决方案1】:

显然,我只需要映射 datavalue 和 datatext 字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 2018-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多