在下拉列表中显示多个字段的两种方法

 

首先,我们需要从数据库中取到我们的数据

Class1:

 1  string sqlcon = "Data Source=.;Initial Catalog=Test;User ID=sa;Password=******";
 2 
 3         public List<ModelClass> FindAll()
 4         {
 5             try
 6             {
 7                 List<ModelClass> modList = new List<ModelClass>();
 8                 using (SqlConnection con = new SqlConnection(sqlcon))
 9                 {
10                     con.Open();
11                     string sql = "select ID,Name,Address from TEST1";
12                     SqlCommand com = new SqlCommand();
13                     com.CommandText = sql;
14                     com.CommandType = CommandType.Text;
15                     com.Connection = con;
16                     using (SqlDataReader read = com.ExecuteReader())
17                     {
18                         while (read.Read())
19                         {
20                             modList.Add(new ModelClass() { ID = Convert.ToInt32(read["ID"].ToString()), Name = read["Name"].ToString(), Address = read["Address"].ToString() });
21                         }
22                     }
23                     return modList;
24                 }
25             }
26             catch (Exception)
27             {
28                 throw;
29             }
30         }
31 
32         public System.Data.DataSet FindAllToDS()
33         {
34             try
35             {
36                 using (SqlConnection con = new SqlConnection(sqlcon))
37                 {
38                     con.Open();
39                     System.Data.DataSet ds = new DataSet();
40                     string sql = "select ID,Name,Address from TEST1";
41                     SqlDataAdapter sda = new SqlDataAdapter();
42                     sda.SelectCommand = new SqlCommand(sql,con);
43                     sda.Fill(ds);
44                     return ds;
45                 }
46             }
47             catch (Exception)
48             {
49 
50                 throw;
51             }
52         }

我分别用list和DataSet两种方式取得了数据,首先我们需要构造一个实现这样方法的类

gzClass:

1 public class gzClass
2     {
3         public int ID { get; set; }
4         public string NameAndAddress { get; set; }
5     }

第一种实现方法:在后台试用构造类去绑定数据

 1  protected void Page_Load(object sender, EventArgs e)
 2         {
 3             if (!IsPostBack)
 4             {
 5                 //元数据
 6                 List<ModelClass> modelList = new List<ModelClass>();
 7                 System.Data.DataTable dt = new System.Data.DataTable();
 8                 //赋值护具
 9                 List<gzClass> strListToList = new List<gzClass>();
10                 List<gzClass> dtList = new List<gzClass>();
11                 //测试连接数据库类
12                 Class1 c1 = new Class1();
13                 //赋值
14                 modelList = c1.FindAll();
15                 dt = c1.FindAllToDS().Tables[0];
16                 //遍历取值并给与另一个构造类
17                 foreach (ModelClass item in modelList)
18                 {
19                     strListToList.Add(new gzClass() { ID = item.ID, NameAndAddress = item.Name + "(" + item.Address + ")" });
20                 }
21 
22 
23                 if (dt != null && dt.Rows.Count > 0)
24                 {
25                     foreach (System.Data.DataRow dsItem in dt.Rows)
26                     {
27                         dtList.Add(new gzClass() { ID = Convert.ToInt32(dsItem["ID"]), NameAndAddress = dsItem["Name"] + "(" + dsItem["Address"] + ")" });
28                     }
29                 }
30 
31                 
32 
33                 this.ddl_list.DataSource = strListToList;
34                 this.ddl_list.DataTextField = "NameAndAddress";
35                 this.ddl_list.DataValueField = "ID";
36                 this.ddl_list.DataBind();
37 
38                 this.ddl_ds.DataSource = dtList;
39                 this.ddl_ds.DataTextField = "NameAndAddress";
40                 this.ddl_ds.DataValueField = "ID";
41                 this.ddl_ds.DataBind();
42 
43             }
44         }


第二种方法:使用ajax异步加载,进行拼接,这时就要借助我们的一般处理程序了

 1  public void ProcessRequest(HttpContext context)
 2         {
 3             context.Response.ContentType = "text/plain";
 4 
 5             //元数据
 6             List<ModelClass> modelList = new List<ModelClass>();
 7             System.Data.DataTable dt = new System.Data.DataTable();
 8             StringBuilder sbu1 = new StringBuilder();
 9             //测试连接数据库类
10             Class1 c1 = new Class1();
11             //赋值
12             modelList = c1.FindAll();
13             dt = c1.FindAllToDS().Tables[0];
14 
15             //拼接数据
16             sbu1.AppendLine("<select name=\"ddl_list\" id=\"ddl_list\">");
17             foreach (ModelClass modelItem in modelList)
18             {
19                 sbu1.AppendLine("<option value=\""+modelItem.ID+"\">"+modelItem.Name+"("+modelItem.Address+")</option>");
20             }
21             sbu1.AppendLine("</select>");
22 
23 
24             sbu1.AppendLine(" <select name=\"ddl_datarow\" id=\"ddl_datarow\">");
25             foreach (System.Data.DataRow drItem in dt.Rows)
26             {
27                 sbu1.AppendLine("<option value=\""+drItem["ID"].ToString()+"\">"+drItem["Name"]+"("+drItem["Address"]+")</option>");
28             }
29             sbu1.AppendLine("</select>");
30             context.Response.Write(sbu1.ToString());
31             context.Response.End();
32         }

把数据返回并在页面中给值,下面是我的aspx页面

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebTest1.WebForm1" %>  2  3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  4  5 <html xmlns="http://www.w3.org/1999/xhtml">  6 <head runat="server">  7 <title></title>  8 <script src="jquery-2.1.1.min.js" type="text/javascript"></script>  9 </head> 10 <body> 11 <form id="form1" runat="server"> 12 <div> 13 <asp:DropDownList ID="ddl_list" runat="server"> 14 </asp:DropDownList> 15 <asp:DropDownList ID="ddl_ds" runat="server"> 16 </asp:DropDownList> 17 <div id="ddlDisplay"></div> 18 </div> 19 </form> 20 </body> 21 </html> 22 <script type="text/javascript"> 23  window.onload = function () { 24  $.ajax({ 25  url: "ddlTest1.ashx", 26  type: "post", 27  async: false, 28  success: function (data) { 29 if (data != "") { 30  $("#ddlDisplay").html(data); 31  } 32  } 33  }); 34 35  } 36 </script>

本人想了半天只想出了这两种方法,欢迎补充,多多学习。

 

转载于:https://www.cnblogs.com/myblogslh/p/4139016.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Matlab2016,主要是因为默认的Matlab字体设置不支持文导致无法显示文字符。这主要涉及到两个方面的问题。 首先,Matlab默认的字体是Monospaced字体,它是一种等宽字体,无法显示文字符。因此,如果想要在Matlab显示文字符,需要修改Matlab的字体设置。 其次,在Matlab的字体设置,需要选择支持文的字体。一种常用的方法是设置字体为SimSun或SimHei,它们是Windows系统上的文字体。可以通过以下步骤来修改字体设置: 1. 打开Matlab软件,并点击菜单栏的“File”选项。 2. 在下列表选择“Preferences”选项,弹出“Preferences”对话框。 3. 在对话框左侧的选项列表选择“Fonts”选项。 4. 在对话框右侧的“Fonts”区域,找到“Desktop code font”和“Web browser font”两个选项。 5. 分别点击“Desktop code font”和“Web browser font”后面的下列表,并选择SimSun或SimHei等文字体。 6. 完成设置后,点击对话框底部的“OK”按钮,保存设置并关闭对话框。 经过以上设置,再次打开Matlab软件时,就可以正常显示文字符了。需要注意的是,由于不同系统和不同版本的Matlab可能存在差异,上述方法仅供参考,具体以实际情况为准。 ### 回答2: 在MATLAB 2016,如果不正确设置字体属性,可能会导致文无法显示。以下是一种解决方法: 1. 首先,确保您的操作系统已经安装了支持文的字体。可以在字体管理器查看已安装的字体。 2. 打开MATLAB,点击"Home"选项卡上的"Preferences",进入MATLAB的首选项设置。 3. 在"Preferences"窗口,选择"General",然后点击"Fonts"。 4. 在"Fonts"选项卡,将"Command Window"和"Desktop"的字体设置为您已经安装的支持文的字体,如宋体、黑体等。 5. 确保选择了相应的字体大小和粗细等属性,以便更好地显示文字符。 6. 点击"OK"保存更改,然后重新启动MATLAB。 重新启动MATLAB后,应该能够正确显示文字符。如果仍然无法显示文,请尝试更新MATLAB版本或与MATLAB技术支持团队联系以获取更多帮助。 ### 回答3: 问题:为什么Matlab 2016不显示文? 回答: Matlab 2016的默认设置不包含对文字符的支持,这可能是您在Matlab看不到文字符的原因。您可以尝试以下方法来解决这个问题: 1. 字体设置:打开Matlab主窗口,依次点击"Home" -> "Preferences" -> "General" -> "Text Analytics" -> "Fonts"。在"Fixed-width font"(固定宽度字体)字段选择一个支持文的字体,例如"Microsoft YaHei"。确认选择后,重新启动Matlab。 2. 字符编码:在Matlab命令窗口输入以下代码来更改Matlab的字符编码为UTF-8,以支持显示: ```matlab feature('DefaultCharacterSet', 'UTF8'); ``` 重新启动Matlab后,您应该能够在Matlab界面和命令窗口正常显示文了。 3. 安装语言包:如果您的Matlab版本支持多国语言,您可以尝试安装相应的语言包。打开Matlab主窗口,依次点击"Home" -> "Addons" -> "Get Addons"。在弹出的Add-On Explorer窗口,搜索并找到您需要的语言包,然后点击"Install"按钮进行安装。安装完成后,重新启动Matlab即可使用文界面。 需要注意的是,以上方法可能需要管理员权限或与Matlab版本相关。如果以上方法都不起作用,建议您尝试使用更高版本的Matlab软件或咨询Matlab官方技术支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值