Dropdownlist邦定数据后,为何不触发SelectedIndexChanged事件,请各位高手帮帮忙。谢谢!急急急!!!!!!!!!!!!!!!!! Dropdownlist邦定数据后,为何不触发SelectedIndexChanged事件。我是直接邦定的而不是手工将数据添加到Dropdownlist中的,如果手工添加进去可以触发,请各位帮我找一下原因。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 将DropDownList的属性: AutoPostBack设置为: true private void drpupfile_SelectedIndexChanged(object sender, System.EventArgs e) { string url = Doc.SystemFramework.AppManager.GetInstance().NewBoardAttachUrl;//取web端地址 IWSInvoke invoke = null; DALService dal = AppManager.GetInstance().DALService; invoke = new NewsDAL(dal); string newid=this.drpupfile.SelectedValue; DataTable dt = invoke.GetData(MethodName.GetData,NewsMapping.NewsID+"="+this.newsID).Tables[0]; DataRow row = dt.Rows[0]; string name=this.drpupfile.SelectedItem.Text; string data = Convert.ToDateTime(row[NewsMapping.CreatedDate].ToString()).ToString("yyyy"); string filename=Path.Combine(data,this.newsID.ToString()); filename=Path.Combine(filename,name); filename=Path.Combine(url,filename); this.Response.Redirect(filename,false); }private void InitializeComponent() { this.txtContent.TextChanged += new System.EventHandler(this.txtContent_TextChanged); this.drpupfile.SelectedIndexChanged += new System.EventHandler(this.drpupfile_SelectedIndexChanged); this.Load += new System.EventHandler(this.Page_Load); } if (!this.IsPostBack) { //Dropdownlis数据帮定代码 } private void Page_Load(object sender, System.EventArgs e) { Response.Expires = 0; if (!this.IsPostBack) { this.newsID = int.Parse(this.Request.QueryString["NewsID"]); this.GetData(newsID); this.getupfile(newsID); } } private void GetData(int newsID) { try { IWSInvoke invoke = null; DALService dal = AppManager.GetInstance().DALService; invoke = new NewsDAL(dal); DataTable dt = invoke.GetData(MethodName.GetData,NewsMapping.NewsID+"="+newsID).Tables[0]; DataRow row = dt.Rows[0]; this.lbRTitle.Text = row[NewsMapping.NewsTitle].ToString(); this.txtContent.Text = row[NewsMapping.Content].ToString(); this.lbRCreatedBy.Text = row[NewsMapping.CreatedBy].ToString(); this.lbRCreatedDate.Text = Convert.ToDateTime(row[NewsMapping.CreatedDate].ToString()).ToString("yyyy-MM-dd hh:mm:ss"); } catch { } 这是邦定数据private void getupfile(int newsID) { try { IWSInvoke invoke = null; DALService dal = AppManager.GetInstance().DALService; invoke = new NewsDAL(dal); DataTable dt = invoke.GetData(MethodName.News.GetAttachment,newsID).Tables[0]; foreach(DataRow row in dt.Rows) {// System.Web.UI.WebControls.Label upfile=new Label();//// this.drpupfile.Items.Add(row[AttachmentMapping.FileName].ToString());// this.drpupfile.Items.Add(new ListItem(row[AttachmentMapping.FileName].ToString(),row[AttachmentMapping.NewsID].ToString())); } this.drpupfile.DataTextField=AttachmentMapping.FileName; this.drpupfile.DataValueField=AttachmentMapping.NewsID; this.drpupfile.DataSource=dt; this.drpupfile.DataBind(); } catch { } 是这样的:Dropdownlist的属性AutoPostBack设置为false即可 掉事件我也碰到过,检查下你除了这些代码部分之外,事件委托正常吗?另外有可能是PostBack的问题或你的VS.NET IDE出了问题。在你的ddl上点右键-属性-在SelectedIndexChanged事件上点右键-重置,然后双击进入写好代码并检查上面的事件委托是否正确。 看看网页中(Html)有没有其他地方设置影响了调用 if (!this.IsPostBack) { //Dropdownlis数据帮定代码 }这个有道理 把dropdownlist的autopostback设置为true然后在page_load里添加在aspx业面添加<asp:dropdownlist id="ddl" runat="server" onselectindexchanged="ddl_selectindexchanged"></asp:dropdownlist>if(!Page.IsPostBack){ bindddl();//绑定dropdownlist的方法}private void ddl_selectindexchanged(object sender,System.EventArgs e){ //添加需要的代码..}这样就可以了哦。。 private void Page_Load(object sender, System.EventArgs e) { Response.Expires = 0; if (!this.IsPostBack) {邦定事件:this.ddl.DataTextField=AttachmentMapping.FileName; this.ddl.DataValueField=AttachmentMapping.NewsID; this.drpupfile.DataSource=dt; this.drpupfile.DataBind();}委托事件:private void InitializeComponent() { this.ddl.SelectedIndexChanged += new System.EventHandler(this.ddl_SelectedIndexChanged); this.Load += new System.EventHandler(this.Page_Load); }WEB页面端的设置:<asp:dropdownlist id="ddl" style="Z-INDEX: 102; LEFT: 104px; POSITION: absolute; TOP: 456px"runat="server" Height="24px" Width="80px" AutoPostBack="True"></asp:dropdownlist> AutoPostBack设置为TRUE和FALSE都不可用 PageLoad里面加上 if(!Page.IsPostBack) {}然后将Dropdownlist的AutoPostBack 设置成 True; 检查你各个选项的Value是否是重复值?这个SelectedIndexChanged 事件的名字比较具有欺骗性,其实不是在Index变化的时候触发,而是Value变化的时候触发的。 从数据库中读取combox1中一项的ID,在程序加载时怎样设置combox1初始加载时选中项的ID与读取的ID一样? 字典和哈希表 关于c# 事件的语法问题 如何把表中年龄为X的男生名字显示在textbox中? C#还原原来皮肤 GSM短信猫读取短信乱码问题,了解的请进!!!! 类型转换的疑问 as 和 () 的转换方式,区别 困扰很久的问题,请教有经验的gg DataTable.Clear(); 之后的问题 C#程序调试运行时正常的,打包后加载不了dll文件 图片在数据库中的插入 跟读取 请高手指点 请给出一个用C#接收Email 的例子,不胜感激。
{
string url = Doc.SystemFramework.AppManager.GetInstance().NewBoardAttachUrl;//取web端地址
IWSInvoke invoke = null;
DALService dal = AppManager.GetInstance().DALService;
invoke = new NewsDAL(dal);
string newid=this.drpupfile.SelectedValue;
DataTable dt = invoke.GetData(MethodName.GetData,NewsMapping.NewsID+"="+this.newsID).Tables[0];
DataRow row = dt.Rows[0];
string name=this.drpupfile.SelectedItem.Text;
string data = Convert.ToDateTime(row[NewsMapping.CreatedDate].ToString()).ToString("yyyy");
string filename=Path.Combine(data,this.newsID.ToString());
filename=Path.Combine(filename,name);
filename=Path.Combine(url,filename);
this.Response.Redirect(filename,false);
}
private void InitializeComponent()
{
this.txtContent.TextChanged += new System.EventHandler(this.txtContent_TextChanged);
this.drpupfile.SelectedIndexChanged += new System.EventHandler(this.drpupfile_SelectedIndexChanged);
this.Load += new System.EventHandler(this.Page_Load); }
//Dropdownlis数据帮定代码
}
{
Response.Expires = 0;
if (!this.IsPostBack)
{
this.newsID = int.Parse(this.Request.QueryString["NewsID"]);
this.GetData(newsID);
this.getupfile(newsID);
}
} private void GetData(int newsID)
{
try
{
IWSInvoke invoke = null;
DALService dal = AppManager.GetInstance().DALService;
invoke = new NewsDAL(dal);
DataTable dt = invoke.GetData(MethodName.GetData,NewsMapping.NewsID+"="+newsID).Tables[0];
DataRow row = dt.Rows[0];
this.lbRTitle.Text = row[NewsMapping.NewsTitle].ToString();
this.txtContent.Text = row[NewsMapping.Content].ToString();
this.lbRCreatedBy.Text = row[NewsMapping.CreatedBy].ToString();
this.lbRCreatedDate.Text = Convert.ToDateTime(row[NewsMapping.CreatedDate].ToString()).ToString("yyyy-MM-dd hh:mm:ss");
}
catch
{
}
private void getupfile(int newsID)
{
try
{
IWSInvoke invoke = null;
DALService dal = AppManager.GetInstance().DALService;
invoke = new NewsDAL(dal);
DataTable dt = invoke.GetData(MethodName.News.GetAttachment,newsID).Tables[0];
foreach(DataRow row in dt.Rows)
{
// System.Web.UI.WebControls.Label upfile=new Label();
//// this.drpupfile.Items.Add(row[AttachmentMapping.FileName].ToString());
// this.drpupfile.Items.Add(new ListItem(row[AttachmentMapping.FileName].ToString(),row[AttachmentMapping.NewsID].ToString()));
}
this.drpupfile.DataTextField=AttachmentMapping.FileName;
this.drpupfile.DataValueField=AttachmentMapping.NewsID;
this.drpupfile.DataSource=dt;
this.drpupfile.DataBind();
}
catch
{
}
另外有可能是PostBack的问题或你的VS.NET IDE出了问题。在你的ddl上点右键-属性-在SelectedIndexChanged事件上点右键-重置,然后双击进入写好代码并检查上面的事件委托是否正确。
//Dropdownlis数据帮定代码
}
这个有道理
在aspx业面添加<asp:dropdownlist id="ddl" runat="server" onselectindexchanged="ddl_selectindexchanged"></asp:dropdownlist>
if(!Page.IsPostBack)
{
bindddl();//绑定dropdownlist的方法
}
private void ddl_selectindexchanged(object sender,System.EventArgs e)
{
//添加需要的代码..
}
这样就可以了哦。。
{
Response.Expires = 0;
if (!this.IsPostBack)
{
邦定事件:
this.ddl.DataTextField=AttachmentMapping.FileName;
this.ddl.DataValueField=AttachmentMapping.NewsID;
this.drpupfile.DataSource=dt;
this.drpupfile.DataBind();}
委托事件:
private void InitializeComponent()
{
this.ddl.SelectedIndexChanged += new System.EventHandler(this.ddl_SelectedIndexChanged);
this.Load += new System.EventHandler(this.Page_Load); }WEB页面端的设置:<asp:dropdownlist id="ddl" style="Z-INDEX: 102; LEFT: 104px; POSITION: absolute; TOP: 456px"runat="server" Height="24px" Width="80px" AutoPostBack="True"></asp:dropdownlist>
if(!Page.IsPostBack)
{}然后将Dropdownlist的AutoPostBack 设置成 True;
这个SelectedIndexChanged 事件的名字比较具有欺骗性,其实不是在Index变化的时候触发,而是Value变化的时候触发的。