最近项目上碰到一个问题,需要通过asp:DropDownList 这个服务器控件的值的变化,来触发后台asp:Button控件的事件调用。经过一番测试,最终实现其效果。
测试代码如下:
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
</div>
<asp:DropDownList ID="DropDownList1" runat="server" OnSelectedIndexChanged="DropDownList1_TextChanged" onchange="test(this)">
<asp:ListItem Text="文本1" Value="1"></asp:ListItem>
<asp:ListItem Text="文本2" Value="2"></asp:ListItem>
<asp:ListItem Text="文本3" Value="2"></asp:ListItem>
</asp:DropDownList>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
<input type="button" id="btn2" value="测试" ="" onclick="test2()" />
</form>
<script>
function test(dp)
{
var sIndex = dp.selectedIndex;
var sText = dp.options[dp.selectedIndex].text;
var sValue = dp.value;
alert(sValue);
document.getElementById("Button1").click();
}
function test2()
{
document.getElementById("DropDownList1").onchange();
}
</script>
</body>
</html>
Default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void DropDownList1_TextChanged(object sender, EventArgs e)
{
var text = this.DropDownList1.Text;
this.TextBox1.Text = text;
}
protected void Button1_Click(object sender, EventArgs e)
{
this.TextBox2.Text = "ok";
}
}