把你后台的代码贴出来看看 =============================== using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Data.SqlClient; using System.Configuration;namespace localhost.backadmin_sub { /// <summary> /// back_sub_xyselect 的摘要说明。 /// </summary> public class back_sub_xyselect : System.Web.UI.Page { protected System.Web.UI.WebControls.Button reset; protected System.Web.UI.WebControls.DropDownList ddli_bm; protected System.Web.UI.WebControls.DropDownList ddli_xm; protected System.Web.UI.WebControls.DropDownList ddli_jg; protected System.Web.UI.WebControls.DropDownList ddli_zjh; protected System.Web.UI.WebControls.Button submit;
<asp:ListItem>--移动到--</asp:ListItem>
<asp:ListItem>收件箱</asp:ListItem>
<asp:ListItem>发件箱</asp:ListItem>
<asp:ListItem>草稿箱</asp:ListItem>
<asp:ListItem>垃圾箱</asp:ListItem>
</asp:DropDownList>看有没有OnSelectedIndexChanged="ddlMove_SelectedIndexChanged"
<asp:ListItem>--移动到--</asp:ListItem>
<asp:ListItem>收件箱</asp:ListItem>
<asp:ListItem>发件箱</asp:ListItem>
<asp:ListItem>草稿箱</asp:ListItem>
<asp:ListItem>垃圾箱</asp:ListItem>
</asp:DropDownList>看有没有OnSelectedIndexChanged="ddlMove_SelectedIndexChanged"
============================================================================
谢谢,我用的.net2003我在属性里加了
=============================================================================
function __doPostBack(eventTarget, eventArgument) {
var theform;
if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {
theform = document.forms["Form1"];
}
else {
theform = document.Form1;
}
theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
theform.__EVENTARGUMENT.value = eventArgument;
theform.submit();
}
====================================================
是这个吗??不好意思,我看不大懂:P
==========================================================
哦,谢谢前辈的忠告,我刚学.net,这个系统是第一个.net作品,自己一个人搞有点郁闷,很多东西还不熟,呵呵,谢谢
====================================================================
<tr>
<td bgColor="#ebf4fc">
<table cellSpacing="0" cellPadding="0" width="100%" border="0">
<tr height="30">
<td align="left" width="25%"> <font size="2"><b>机构</b></font></td>
<td>
<select name="ddli_jg" onchange="__doPostBack('ddli_jg','')" language="javascript" id="ddli_jg" style="width:180px;">
<option value="1">天津公司</option>
<option value="2">北京公司</option>
<option value="3">上海公司</option>
<option value="4">重庆公司</option>
</select>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td bgColor="#ebf4fc">
<table cellSpacing="0" cellPadding="0" width="100%" border="0">
<tr height="30">
<td width="25%"> <font size="2"><b>部门:</b></font></td>
<td>
<select name="ddli_bm" onchange="__doPostBack('ddli_bm','')" language="javascript" id="ddli_bm" style="width:180px;"></select>
</td>
</tr>
</table>
</td>
</tr>
这事前两个dropdownlist的客户端
=====================================================================================
其他代码有抄的,但这个确实没抄,所谓联动,是别人这么叫,我也不知道怎么叫好,就是三个dropdownlist数据都是从数据库中取,第一个选择一个后,第二个就回显示与第一个相关的数据选择,第三个和第二个相关,html贴出来了,第一个的绑定了数据,可是第二个没有,因为我是在第一个dropdownlist的selectedindexchanged事件查和第一个dropdownlist相关的数据在绑定的,可是现在第一个dropdownlist改变选择后没有自动postback,我点按钮回传后才能显示我想要的结果,情况就是这样的,谢谢您:)
所以每次autopostback 都会再次初始化绑定dropdownlist,所以没达到联动效果
=============================================================================
哦,这个我上网查到过,可是我跟程序了,四个item的value不一样,1,2,3,4没错啊,
谢谢您:)
所以每次autopostback 都会再次初始化绑定dropdownlist,所以没达到联动效果
=========================================================================
您是说第一个dropdownlist的绑定吗??我放在里面了啊,代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
ddli_jg_bind();
}
}
private void ddli_jg_bind()
{
try
{
SqlConnection myConnection=new SqlConnection(common_cs.database.connectionstr);
myConnection.Open();
string strjg="select * from JGBMB where prejgbmid=0";
SqlDataAdapter myDataAdapter=new SqlDataAdapter(strjg,myConnection);
DataSet myds=new DataSet();
myDataAdapter.Fill(myds,"JGBMB");
ddli_jg.DataBind();
myConnection.Close();
}
catch(Exception ex)
{
Response.Write("<script>alert('"+ex.Message+"')</script>");
}
}
==========================================================================
这个我也是放在里面的啊,代码如下:
private void ddli_jg_SelectedIndexChanged(object sender, System.EventArgs e) //选择机构
{
try
{
SqlConnection myConnection=new SqlConnection(common_cs.database.connectionstr);
myConnection.Open();
string strbm="select * from JGBMB where prejgbmid='"+ddli_jg.SelectedItem.Value+"'";
SqlDataAdapter myDataAdapter1=new SqlDataAdapter(strbm,myConnection);
DataSet myds1=new DataSet();
myDataAdapter1.Fill(myds1,"JGBMB");
ddli_bm.Items.Clear();
ddli_bm.DataValueField=myds1.Tables["JGBMB"].Columns["jgbmid"].ToString();
ddli_bm.DataTextField=myds1.Tables["JGBMB"].Columns["jgbmm"].ToString();
ddli_bm.DataSource=myds1.Tables["JGBMB"].DefaultView;
ddli_bm.DataBind();
myConnection.Close();
}
catch(Exception ex)
{
Response.Write("<script>alert('"+ex.Message+"')</script>");
}
}
==========================================================================
根据您说的,我在page_load里设置了断点,在我改变ddli_jg的选项时没有重新执行page_load,点按钮才能执行,两次都是<option selected="selected" value="1">天津公司</option>,只有点按钮时才变成selected value="2",应该也就说没有执行autopostback是吧,为什么呢?
===============================
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Configuration;namespace localhost.backadmin_sub
{
/// <summary>
/// back_sub_xyselect 的摘要说明。
/// </summary>
public class back_sub_xyselect : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button reset;
protected System.Web.UI.WebControls.DropDownList ddli_bm;
protected System.Web.UI.WebControls.DropDownList ddli_xm;
protected System.Web.UI.WebControls.DropDownList ddli_jg;
protected System.Web.UI.WebControls.DropDownList ddli_zjh;
protected System.Web.UI.WebControls.Button submit;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
ddli_jg_bind();
}
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.ddli_jg.SelectedIndexChanged += new System.EventHandler(this.ddli_jg_SelectedIndexChanged);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void ddli_jg_bind()
{
try
{
SqlConnection myConnection=new SqlConnection(common_cs.database.connectionstr);
myConnection.Open();
string strjg="select * from JGBMB where prejgbmid=0";
SqlDataAdapter myDataAdapter=new SqlDataAdapter(strjg,myConnection);
DataSet myds=new DataSet();
myDataAdapter.Fill(myds,"JGBMB");
ddli_jg.DataValueField=myds.Tables["JGBMB"].Columns["jgbmid"].ToString();
ddli_jg.DataTextField=myds.Tables["JGBMB"].Columns["jgbmm"].ToString();
ddli_jg.DataSource=myds.Tables["JGBMB"].DefaultView;
ddli_jg.DataBind();
myConnection.Close();
}
catch(Exception ex)
{
Response.Write("<script>alert('"+ex.Message+"')</script>");
}
} private void ddli_jg_SelectedIndexChanged(object sender, System.EventArgs e) //选择机构
{
try
{
SqlConnection myConnection=new SqlConnection(common_cs.database.connectionstr);
myConnection.Open();
string strbm="select * from JGBMB where prejgbmid='"+ddli_jg.SelectedItem.Value+"'";
SqlDataAdapter myDataAdapter1=new SqlDataAdapter(strbm,myConnection);
DataSet myds1=new DataSet();
myDataAdapter1.Fill(myds1,"JGBMB");
ddli_bm.Items.Clear();
ddli_bm.DataValueField=myds1.Tables["JGBMB"].Columns["jgbmid"].ToString();
ddli_bm.DataTextField=myds1.Tables["JGBMB"].Columns["jgbmm"].ToString();
ddli_bm.DataSource=myds1.Tables["JGBMB"].DefaultView;
ddli_bm.DataBind();
myConnection.Close();
}
catch(Exception ex)
{
Response.Write("<script>alert('"+ex.Message+"')</script>");
}
} }
}
除了注释掉的代码,都在这了,应该是4个dropdownlist的,只弄了两个因为有问题,那两个还没弄,呵呵
==============================================================
没执行这个都,因为没有自动postback,谢谢;)
===============================================================================
设了:)
==================================================================
我在每个过程的第一行都设了断点,执行时,改变ddli_jg的客户端的值没有反应,根本没有执行page_load
===============================================================
我的后台代码已经贴出来了啊,
if(!IsPostBack)
{
ddli_jg_bind();
}
在里面,相应过程指的是什么呢??是说this.ddli_jg.SelectedIndexChanged += new System.EventHandler(this.ddli_jg_SelectedIndexChanged);
吗?
有时候事件也不一定调用指定的函数,你仔细看看!!!
====================================================================================
确定没有执行,浏览器没有禁止js,我贴出来的那个js脚本是执行程序时用“查看源文件”看的啊,我的程序里没有写js脚本啊,怎么会改写呢,这个源文件改写了也不会对服务器上的程序有影响吧,这个不是服务器处理完程序,传给浏览器然后生成的吗,我不是很明白,刚才我把它存成htm文件试了,这个已经在服务器上处理过的文件执行了怎么能看出来为什么没有执行selectedindexchanged呢??不是很明白,怎么看出来为什么autopostback被改了呢??谢谢
====================================================
确实是:)
没有的话就是事件没有指定相应的过程!
有的话基本就是你重复帮定数据了!里面即使有了this.ddli_jg.SelectedIndexChanged += new System.EventHandler(this.ddli_jg_SelectedIndexChanged);
有时候事件也不一定调用指定的函数,你仔细看看!!!
==============================================================
没有刷屏啊,如果刷了,不久执行了吗,就是没有执行啊
我用html窗口双击也能指向这个过程,可是就是不执行,郁闷
我仔细看了你里面的代码,不就是第一次帮定的代码吧!!!
这样你随便怎么样选择不是永远都是第一次加载的数据???
===================================================================================
啊啊啊啊啊啊啊啊啊啊啊啊啊啊,我知道了,我的页面上有个按钮,我把它去掉就可以了,我不知道为什么,可能是.net默认的提交就是您说的Form.Submit指向按钮吧,总之去掉它就可以了,哈哈哈哈
终于解决了,谢谢以上的所有前辈,耽误你们的时间了,非常感谢,不过难题来了,分不好给了,呵呵,下班了,回家给
:D
再次感谢!!!
================================================================================
呵呵,那个按钮是准备以后提交表单的,还没写它的Onclick事件呢,现在还没作用
不过id是submit
谢谢您的忠告,以后其他遇到这些情况我会注意的:)