GVKun编程网logo

如何使用 postgres 数据库中的值动态填充 html 下拉列表?

1

最近很多小伙伴都在问如何使用postgres数据库中的值动态填充html下拉列表?这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展4.6、BootstrapV4自学之路------

最近很多小伙伴都在问如何使用 postgres 数据库中的值动态填充 html 下拉列表?这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展4.6、Bootstrap V4自学之路------组件---下拉列表、Android 下拉列表 Spinner 使用、android 基本控件示例 Spinner 下拉列表 (04)、AngularDart Material Design 下拉列表等相关知识,下面开始了哦!

本文目录一览:

如何使用 postgres 数据库中的值动态填充 html 下拉列表?

如何使用 postgres 数据库中的值动态填充 html 下拉列表?

如何解决如何使用 postgres 数据库中的值动态填充 html 下拉列表?

我正在用 Flask 制作一个网站,我正在尝试创建一个下拉菜单,其中填充了我的 postgres 数据库中区域表中的所有区域。目前我已经对下拉菜单进行了硬编码:

<label for="regions">Choose a region:</label>

<select name="regions" id="regions">
  <option value="murray">Murray</option>
  <option value="darling">Darling</option>
  <option value="coast">Coast</option>
  <option value="central">Central</option>
</select>

但是,我想更改此设置,以便根据包含所有区域的表的 sql 查询填充下拉列表。这可能吗?

所有区域名称的 sql 查询为:

select region_name from regions

解决方法

在后端(flask)中,您可以使用查询从 Postgres 数据库中获取所有值:

# code to connect to db
...
# code to fetch from database
list_of_regions = db.execute("select region_name from regions")

然后将这些值传递给前端页面:

@app.route("/")
def index():
    return render_template("index.html",list_of_regions = list_of_regions)

在前端,您可以使用 Jinja 遍历值并将项目添加到下拉列表中:

<label for="regions">Choose a region:</label>

<select name="regions" id="regions">
  {% for region in list_of_regions %}
    <option value={{region.lower()}}>{{region}}</option>
  {% endfor %}
</select>

只需用上面提供的通用代码替换特定于案例的代码,就可以了。我不确定如何连接到 postgres 数据库,因为我主要使用 MySQL,所以我想这个 package 可能会更好地帮助你。

4.6、Bootstrap V4自学之路------组件---下拉列表

4.6、Bootstrap V4自学之路------组件---下拉列表

示例

把弹出菜单的触发器以及弹出菜单包裹在一个.dropdown中,或者其它声明了position:relative;的元素中。然后,添加菜单的HTML。

<div >
  <button  type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
    Dropdown
  </button>
  <div  aria-labelledby="dropdownMenu1">
    <a  href="#">Action</a>
    <a  href="#">Another action</a>
    <a  href="#">Something else here</a>
  </div>
</div>

PS:新知识点的话,则是 .open类。加上之后是打开状态。

按钮元素

你可以视情况在你的弹出菜单中使用<button>元素,而不是<a>元素。

<div >
  <button  type="button" id="dropdownMenu2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
    Dropdown
  </button>
  <div  aria-labelledby="dropdownMenu2">
    <button  type="button">Action</button>
    <button  type="button">Another action</button>
    <button  type="button">Something else here</button>
  </div>
</div>

PS:这里要注意的是在菜单列表中,<button>标签替代了<a>。

    如果说两者有什么差别的话。我想到了之前看文档上所说的,form表单。

    form控件,无法管理到<a>标签。参考form 表单文档。

对齐

默认情况下,一个弹出菜单的菜单是自动放置在父元素下面,与父元素左侧对齐。给.dropdown-menu添加.dropdown-menu-right类能使菜单向右侧对齐。

<div >
  <button  type="button" id="dropdownMenu2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
    Dropdown
  </button>
  <div  aria-labelledby="dropdownMenu2">
    <button  type="button">Action</button>
    <button  type="button">Another action</button>
    <button  type="button">Something else here</button>
  </div>
</div>

PS:当使用 .dropdown-menu-right类。需要设置父类框的宽度。

菜单头部

在任何一个弹出菜单添加一个头部以标记活动的分区。

<div >
  <button  type="button" id="dropdownMenu2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
    Dropdown
  </button>
    <div >
      <h6 >Dropdown header</h6>
      <a  href="#">Action</a>
      <a  href="#">Another action</a>
    </div>
  </div>
</div>

PS:添加 .dropdown-header类。则标签固定且不可编辑。

菜单分隔线

使用一个分隔线来对相关的菜单项分组。

<div >
  <button  type="button" id="dropdownMenu2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
    Dropdown
  </button>
    <div >
      <a  href="#">Action</a>
      <a  href="#">Another action</a>
      <a  href="#">Something else here</a>
      <div ></div>
      <a  href="#">Separated link</a>
    </div>
</div>

PS:看到之前的文档里,使用过这个属性 .dropdown-divider类

禁用的菜单项

对弹出菜单中的某一项添加.disabled类,可以把它们样式化为不可用

<div >
  <button  type="button" id="dropdownMenu2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
    Dropdown
  </button>
    <div >
      <a  href="#">Regular link</a>
      <a  href="#">Disabled link</a>
      <a  href="#">Another link</a>
    </div>
</div>

用法

依靠数据属性或者JavaScript,通过切换菜单项的父元素上的.open类,弹出菜单插件可以切换内容(弹出菜单)的可见性。

在移动设备上,打开一个弹出菜单会添加一个.dropdown-backdrop作为轻触区域,如果在菜单外面轻触时弹,菜单会关闭。这是支持iOS设备的要求。这意味着在移动设备上,从一个打开的弹出菜单切换到另一个弹出菜单至少需要两次轻触

注意:data-toggle="dropdown"属性是关闭弹出菜单的菜单在应用程序级别的依靠。所以最好一直使用它。


利用数据属性

给一个链接或者按钮添加一个data-toggle="dropdown"以切换一个弹出菜单。

不截图了。关键是指data-toggle="dropdown"存在的位置、和对应的关系。

<div >
  <button id="dLabel" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
    Dropdown trigger
  </button>
  <div  aria-labelledby="dLabel">
    ...
  </div>
</div>

为了保持URL与链接按钮交互,请使用data-target属性而不是href="#"

<div >
  <a id="dLabel1" data-target="#" href="http://example.com" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
    Dropdown trigger
  </a>

  <div  aria-labelledby="dLabel1">
      <a  href="#">Regular link</a>
      <a  href="#">Disabled link</a>
      <a  href="#">Another link</a>
  </div>
</div>

这样的样式有些难看。。。。(吐槽~_~!)

利用JavaScript

$(''.dropdown-toggle'').dropdown()

选项

无?

方法

$().dropdown(''toggle'')      对给定的导航条或轻触导航触发弹出菜单的菜单

PS:这里我尝试了,但是效果是触发点击效果,但不弹出菜单。

事件

所有的弹出菜单事件都是在.dropdown-menu的父元素上触发的,这个父元素都有一个relatedTarget属性,它的值是触发的锚元素。

事件 描述
show.bs.dropdown 当调用显示实例的方法时,会立即触发该事件。
shown.bs.dropdown 当弹出菜单已经对用户可见时(需要等待CSS 过渡完成),会触发该事件。
hide.bs.dropdown 当调用隐藏实例的方法时,会立即触发该事件。
hidden.bs.dropdown 当弹出菜单已经对用户不可见时(需要等待CSS 过渡完成),会触发该事件。


$(''#myDropdown'').on(''show.bs.dropdown'', function () {
   // do something… 
})



Android 下拉列表 Spinner 使用

Android 下拉列表 Spinner 使用

1、布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.helloword.DropListActivity" >

    
    <Spinner 
             android:id="@+id/spinner1"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:entries="@array/ctype" />
    
    <Spinner android:id="@+id/spinner2"
             android:layout_width="wrap_content" 
             android:layout_height="wrap_content"/>
    
    

</LinearLayout>

2、arrays.xml

 

 

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="ctype">
        <item>全部</item>
        <item>电影</item>
        <item>书籍</item>
        <item>体育</item>
        <item>文娱</item>
        <item>生活</item>
    </string-array>
</resources>

3、Activity

package com.example.helloword;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

public class DropListActivity  extends Activity implements View.OnClickListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_drop_list);
        
        String[] arrayStrings = new String[]{"全部","海贼王","火影忍者","龙珠"};
        
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,arrayStrings);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
        
        Spinner spinner = findViewById(R.id.spinner2);
        
        spinner.setAdapter(adapter);
    }

    @Override
    public void onPointerCaptureChanged(boolean hasCapture) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        
    }

    
}

 

android 基本控件示例 Spinner 下拉列表 (04)

android 基本控件示例 Spinner 下拉列表 (04)

/* simpleadapteractivity_main.xml,这个是自定义的下拉列表布局,用来给activity_main.xml 布局的下拉列表显示图片跟选项*/
public class SimpleApapterfMainActivity extends Activity {
	private Spinner sp;
	private TextView txt;
	private SimpleAdapter simpleadapter; 
	private int []image={R.drawable.bump,R.drawable.calculator,R.drawable.music,R.drawable.radio,R.drawable.rss,R.drawable.score
			,R.drawable.sky,R.drawable.talk};
	private String[]str={"小学","初中","高中","大学","研究生","硕士","博士","博士后"};//数据源 
		@Override
		protected void onCreate(Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
			setContentView(R.layout.activity_main);
			sp=(Spinner) this.findViewById(R.id.sp);
			txt=(TextView) this.findViewById(R.id.txt);
			//data是map键值对的数据,自定义类型要用自己定义数据
			List<Map<String, Object>> data=new ArrayList<Map<String,Object>>();
			//将前面定义的数组数据,装载到data里面
			for(int i=0;i<image.length;i++ ){
				Map<String ,Object>itemMap=new HashMap<String ,Object>();
				itemMap.put("header", image[i]);
				itemMap.put("name", str[i]);
				//这里的"header"和"name"是随便给的,只是到时候取值要记得自己的键去取值
				data.add(itemMap);
			}
			/**
			 * SimpleAdapter(context, data, resource, from, to) 
			 * context:上下文
			 * data:数据是map键值对,加到list集合中
			 * resource:自定义的布局,现在用的安卓自带的显示布局模式:android.R.layout.simple_list_item_1
			 * from:字符串类型的键
			 * to:整形的自定义布局,即控件的id
			 */
			//将自己定义的布局给适配器:自己建一个布局文件R.layout.simpleadapteractivity_main
			simpleadapter=new 	SimpleAdapter(this, data, R.layout.simpleadapteractivity_main, new String[]{"header","name"}, new int[]{R.id.header,R.id.txt});
		   sp.setAdapter(simpleadapter);
		   //设置监听
		   sp.setOnItemSelectedListener(new OnItemSelectedListener() {

			@Override
			public void onItemSelected(AdapterView<?> parent, View view,
					int position, long id) {

				//怎么获取自定义的内容
				//通过适配器获取该位置的内容,也就是键key,再根据键key获取内容键值
				Map<String ,Object>item=(Map<String, Object>) simpleadapter.getItem(position);
				Log.i("simpleAd", item+"");
				txt.setText(item.get("name")+"");
				Log.i("simpleAd", item.get("name")+"");
/*				//适配器获取点击的内容, ArrayAdapter
				//法1:
				String data1=sp.getSelectedItem().toString();
				//法2:
				String data2=parent.getSelectedItem().toString();
				//法3:
				String data3=parent.getItemAtPosition(position).toString();
				//法4:  
				//String data4=adapter.getItem(position);
				//txt.setText(data1+","+data2+","+data3+","+data4);			
*/			}

			@Override
			public void onNothingSelected(AdapterView<?> parent) {
				
			}
		});

		}
	     public void	submit(View view){
	    	 String data=sp.getSelectedItem().toString();
	    	 txt.setText(data);
	     }
}
//主布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
     >
     <!-- 下拉列表 -->
    <Spinner
        android:id="@+id/sp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
        <Button
        android:id="@+id/submit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="提交"
        android:onClick="submit"
        />
       <TextView
        android:id="@+id/txt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        />
        

</LinearLayout>

//自定义布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
     >
     <!-- 这个是自定义的下拉列表布局,用来给activity_main.xml 布局的下拉列表显示图片跟选项-->
        <!-- 这是跟选项显示在下拉列表中的,所以图片要小一下 android:scaleType="centerInside"根据图片大小居中,不会拉伸 -->
        <ImageView
        android:id="@+id/header"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:scaleType="centerInside"
        />
       <TextView
        android:id="@+id/txt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text=""
        android:gravity="center"
        />
        

</LinearLayout>

AngularDart Material Design 下拉列表

AngularDart Material Design 下拉列表

MaterialDropdownSelectComponent

Selector: <material-dropdown-select>

Material Dropdown Select是按钮触发的下拉列表。

material-dropdown-select组件结合了material-select和material-button-down的API。

当与单个选择模型一起使用时,下拉选择时关闭。 使用多选模型时,用户必须通过单击其外部来关闭下拉列表。

可以通过传递material-select-item元素手动声明选择选项。 使用声明性API时,不会注入SelectionModel和SelectionOptions,因此将项目标记为选中不是自动的。

如果OptionGroup为空并且已定义emptyLabel,则下拉列表将包含其他组。 如果没有为空组定义emptyLabel,它将不会出现在列表中。

通过SelectionOptions实现的ObserveAware接口支持异步建议。

材料选择具有固定的最大高度和自动溢出。 一旦有用例,我们可以为自定义最大高度添加属性。

请参阅示例以了解用法

Attributes:

  • buttonAriaRole - 按钮图标的Aria标签。
  • popupClass - 要添加到下拉列表弹出窗口的样式类,以便可以以封装方式设置弹出窗口的样式。 有关文档,请参阅MaterialPopup。

Inputs:

  • ariaActiveDescendant String 
    下拉列表的活动元素的id。
     
  • buttonAriaLabel String 
    按钮的咏叹调标签。
     
  • buttonAriaLabelledBy String 
    在下拉按钮中描述选择的元素的id。
    例如,对于带有数字选项的下拉列表,显示“每页结果”的文本元素。
     
  • buttonText String 
    按钮上的文字。
     
  • componentRenderer (dynamic) → Type 
    使用factoryRenderer它允许更多树可动作的代码。
     
  • constrainToViewport bool 
    是否限制下拉位置,使其永远不会脱离屏幕。
     
  • deselectLabel String 
    选择项目的文本标签,取消选择当前选择项。
     
  • deselectOnActivate bool 
    是否在单击或enter/space键上取消选择所选选项。仅限单一选择模型。默认为true。
     
  • disabled bool 
    是否禁用该按钮。
     
  • enforceSpaceConstraints bool 
    避免渲染下拉屏幕。
     
  • error String 
    下拉按钮下方显示错误。
     
  • factoryRenderer (dynamic) → ComponentFactory<dynamic> 
    返回组件工厂以呈现Item的函数。
    生成的组件必须实现RendersValue。
     
  • icon Icon 
    与按钮一起使用的图标。 (可选的)
     
  • iconName String 
    用于按钮的图标。有关可能的值,请参见MaterialIconComponent。
     
  • itemRenderer (dynamic) → String 
    将选项对象转换为字符串的函数。
     
  • labelFactory (dynamic) → ComponentFactory<dynamic> 
    返回要用于渲染组标签的组件的工厂。
     
  • labelRenderer (dynamic) → Type 
    已禁用!使用labelFactory而不是它允许更好的树可抖动代码。
     
  • listAutoFocus bool 
    弹出窗口打开时是否默认聚焦选项列表。
    当弹出窗口中的另一个元素专注于打开时,应设置为false,例如一个搜索框。
     
  • options SelectionOptions<dynamic> 
    用于此选择模型的选项。
     
  • popupMatchInputWidth bool 
    弹出宽度是否至少与选择宽度一样宽。
     
  • preferredPositions List<dynamic> 
    当enforceSpaceConstraints为true时,对齐的首选位置
     
  • raised bool 
    按钮是否凸起。
     
  • selection SelectionModel<dynamic> 
    此组件控制的选择模型。
     
  • showButtonBorder bool 
    是否显示下拉按钮的下边框。
     
  • slide String 
    弹出缩放的方向。
    有效值为x,y或null。
     
  • trackLayoutChanges bool 

    设置建议列表是否随输入框滚动。

    这是一个传递属性,如PopupInterface中所定义。
     

  • visible bool 
    下拉列表是否可见。
     

  • width dynamic 
    下拉列表的宽度,默认为无,有效值为0-5。

Outputs:

  • blur Stream<FocusEvent> 
    下拉按钮失去焦点时触发的事件。
     
  • focus Stream<FocusEvent> 
    下拉按钮聚焦时触发的事件。
     
  • visibleChange Stream<bool> 
    当下拉列表的可见性发生变化时触发。

MaterialDropdownSelectDemoComponent

查看示例,查看源码。

关于如何使用 postgres 数据库中的值动态填充 html 下拉列表?的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于4.6、Bootstrap V4自学之路------组件---下拉列表、Android 下拉列表 Spinner 使用、android 基本控件示例 Spinner 下拉列表 (04)、AngularDart Material Design 下拉列表等相关内容,可以在本站寻找。

本文标签: