ASP.NET中控件dropdownlist下拉菜单选择不同项显示不同的图片
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET中控件dropdownlist下拉菜单选择不同项显示不同的图片相关的知识,希望对你有一定的参考价值。
求教各位高手,本人刚学ASP.NET,疑问颇多
以控件dropdownlist的下拉菜单方式选择不同项,按下控件Buttun“确定键”,然后在页面上显示不同的图片,如何实现这一过程啊?急用!我对添加控件的事件语言不懂写,求教具体的控件编程方式!!!
我的意思是在DropDownLis下拉菜单里面放置各个图片的名字,当点击其中一个图片名时,再点击确定,就会在窗口中显示相对应的图片
前台代码:(test.aspx)
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test.aspx.cs" Inherits="test" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True">
<asp:ListItem Value="图片地址1">公司Logo</asp:ListItem>
<asp:ListItem Value="图片地址2">百度Logo</asp:ListItem>
<asp:ListItem Value="图片地址3">百度Logo</asp:ListItem>
</asp:DropDownList>
<asp:Button ID="Button1" runat="server" Text="显示" OnClick="Button1_Click" />
<asp:Image ID="Image1" runat="server" Height="29px" Width="138px" />
</div>
</form>
</body>
</html>
后台代码:(test.aspx.cs)
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
public partial class test : System.Web.UI.Page
protected void Page_Load(object sender, EventArgs e)
protected void Button1_Click(object sender, EventArgs e)
int selectIndex = DropDownList1.SelectedIndex;
string imgUrl = DropDownList1.Items[selectIndex].Value;
Image1.ImageUrl = imgUrl;
不知道楼主想要的是不是这种效果,还有你的问题写的不是很详细,你可以把问题补充详细一点再问,这样的话别人才知道怎么样帮你解决的。 参考技术A 后台加protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
这里面有代码吗
将一般的 ASP.NET 控件视为基于列表的控件(即 DropDownList、RadioButtonList 等)
【中文标题】将一般的 ASP.NET 控件视为基于列表的控件(即 DropDownList、RadioButtonList 等)【英文标题】:Treat a general ASP.NET Control like a list-based control (i.e. DropDownList, RadioButtonList, etc.) 【发布时间】:2020-04-10 06:40:01 【问题描述】:我已经构建了一个方法,该方法使用用户指定的适当数据清除和重置 DropDownList,如下所示:
protected void ResetDDL(DropDownList ddl, DataTable dt)
ddl.Items.Clear();
ddl.DataSource = dt;
ddl.DataBind();
private void LoadVehicleTypes()
DataTable dt = new DataTable();
SqlConnection sc = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlconnectionstring"].ConnectionString);
sc.Open();
SqlDataAdapter sda = new SqlDataAdapter("procedure", sc);
sda.SelectCommand.CommandType = CommandType.StoredProcedure;
sda.Fill(dt);
sc.Close();
ResetDDL(ddlYourDropDown, dt);
虽然这可以正常工作,但我注意到对 RadioButtonList 执行相同操作的代码是相同的,这让我想知道是否有一种方法可以将 ResetDDL 与 RadioButtonList 等效项结合起来:ResetRBL。为此,我尝试将代码中的DropDownList
替换为Control
,但这只会产生Control does not contain a definition for 'Items/DataSource'
错误,因此我查看是否有任何方法可以告诉程序给定的Control 是DropDownList或 RadioButtonList 以及在确认它们是 DDL 或 RBL 后如何处理它们。这里的想法是取其中一个控件的名称,找到实际的控件本身,然后执行重置方法。
从这里,我运行了一个测试,看看我是否可以得到 Control 的类型 - 我可以!
bool itworks = false;
string tst = rbl.GetType().ToString(); // in this case, tst is "System.Web.UI.WebControls.DropDownList"
if (tst.Contains("RadioButtonList"))
itworks = true;
从这里我认为获取控件类型就像从 GridView 中的控件中获取文本一样简单,但事实并非如此。我意识到,虽然您可以轻松获取 GridView 的文本并将其放入程序中 --
foreach (GridViewRow row in gvTempVehicleData.Rows)
SqlCommand cmdVData = new SqlCommand("cmdVDataProcedure", sc);
cmdVData.CommandType = CommandType.StoredProcedure;
cmdVData.Parameters.AddWithValue("DataYear", ((TextBox)row.FindControl("txtTempDataYear")).Text);
cmdVData.ExecuteNonQuery();
-- 对于 GridView 之外的车辆,似乎不太一样。但我仍然想知道:有没有办法将控件的名称作为字符串,找到同名的实际控件,并使用我正在寻找的控件类型的方法?如果这是可能的,我认为减少我可以使用的代码量会有所帮助。
任何帮助将不胜感激!
【问题讨论】:
【参考方案1】:问题在于所采用的控件类型。该方法应该接受ListControl
,而不是Control
,如下所示:
public void ResetList(ListControl control, DataTable newData)
control.Items.Clear();
control.DataSource = newData;
control.DataBind();
【讨论】:
以上是关于ASP.NET中控件dropdownlist下拉菜单选择不同项显示不同的图片的主要内容,如果未能解决你的问题,请参考以下文章
如何给DropDownList控件设置样式(ASP.NET MVC)
在 ASP.NET Webform 中扩展 DropDownList