把Page_Load里的绑定代码写在if(!Page.IsPostBack){}里
解决方案 »
- 能不能提供页面不用服务器控件的一些思路。。有些repeater不可能改吧
- DataList中的ItemTemplate嵌套checkbox如何获取打钩的行ID号
- spring.net教程
- Web页面上将两个TextBox的值求和并赋值给第三个TextBox
- asp.net的Form认证机制是否可以设定哪些页面需要认证?
- System.Configuration.ConfigurationManager.AppSettings("str")有可能是空值,如何判断?
- 用LoadControl动态加载用户控件使用属性问题
- 弹出窗口选择的问题
- 求助!ASP.NET 与 ASP 的MD5汉字加密出来的效果不一样?
- 怎样能让label空件自动换行
- 在控件中如何定义事件,高手进来看看
- 有没有像ASX这样的元素直接打开.doc或.xls文件
{
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using WebComponent; /// <summary>
/// wcMenus 的摘要说明。
/// </summary>
public abstract class wcMenus : ModuleControl
{
protected System.Web.UI.WebControls.Label Label6;
protected System.Web.UI.WebControls.Label Label5;
protected System.Web.UI.WebControls.Label Label4;
protected System.Web.UI.WebControls.Label Label3;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.DropDownList cbxMenuType;
protected System.Web.UI.WebControls.TextBox txtMenuFuncNo;
protected System.Web.UI.WebControls.TextBox txtMenuDesc;
protected System.Web.UI.WebControls.TextBox txtMenuCaption;
protected System.Web.UI.WebControls.TextBox txtMenuNo;
protected System.Web.UI.WebControls.TextBox txtMenuImageURL;
protected System.Web.UI.WebControls.Button btnAdd;
protected System.Web.UI.WebControls.Button btnDelete;
protected System.Web.UI.WebControls.Button btnSave;
protected System.Web.UI.WebControls.Button btnCancel;
protected System.Web.UI.WebControls.ListBox listMenu;
protected System.Web.UI.WebControls.TextBox txtMenuItem;
protected System.Web.UI.WebControls.Label Label7;
protected System.Web.UI.WebControls.Label Label8;
protected System.Web.UI.WebControls.ListBox listLinkMenu; private Menu mMenu;
private void Page_Load(object sender, System.EventArgs e)
{
if(!this.IsPostBack)
{
LoadDataIntoList();
} } #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
mMenu=(Menu)Session["Menu"];
//FillTreeView();
}
/// 设计器支持所需的方法 - 不要使用
/// 代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click);
this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
this.listMenu.SelectedIndexChanged += new System.EventHandler(this.listMenu_SelectedIndexChanged);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void LoadDataIntoList()
{
DataSet ds=new DataSet();
ListItem ls= new ListItem("所有功能","");
listMenu.Items.Add(ls); mPortal.SysManager.Connection.Fill("SELECT MENUNO,MENUCAPTION=REPLICATE(' ',(MENULEVEL))+MENUCAPTION FROM MENUREC ORDER BY MENUSUC",ref ds,"MENUREC");
foreach(DataRow Row in ds.Tables["MENUREC"].Rows)
{
ls=new ListItem(Row["MENUCAPTION"].ToString(),Row["MENUNO"].ToString()); listMenu.Items.Add(ls);
}
} private void SetValueToObject()
{
/* mMenu.ClearLinkMenu("");
foreach(ListItem ls in listLinkMenu.Items)
{
if(ls.Selected)
{
MenuLink ml=new MenuLink(mMenu,mPortal.SysManager);
ml.MenuLinkNo=mMenu.MenuNo ;
ml.MenuLinkFromNo=ls.Text.Substring(0,ls.Text.IndexOf("-")).Trim();
mMenu.Links.Add(ml);
}
}
*/
mMenu.MenuItem=txtMenuItem.Text;
mMenu.MenuNo=txtMenuNo.Text;
mMenu.MenuCaption =txtMenuCaption.Text;
mMenu.MenuDesc =txtMenuDesc.Text ;
if(cbxMenuType.SelectedIndex>-1)
mMenu.MenuType =Convert.ToInt16(cbxMenuType.SelectedItem.Value);
else
mMenu.MenuType=1;
mMenu.MenuFuncNo=txtMenuFuncNo.Text ;
mMenu.MenuImageUrl=txtMenuImageURL.Text; } private void SetValueToControl()
{
txtMenuItem.Text =mMenu.MenuItem;
txtMenuNo.Text =mMenu.MenuNo;
txtMenuCaption.Text=mMenu.MenuCaption;
txtMenuDesc.Text=mMenu.MenuDesc;
txtMenuFuncNo.Text=mMenu.MenuFuncNo;
cbxMenuType.SelectedIndex=mMenu.MenuType-1;
txtMenuImageURL.Text=mMenu.MenuImageUrl;
if(mMenu.MenuType!=1)
{
btnAdd.Enabled =false;
}
else
{
btnAdd.Enabled =true;
}
LinkMenuBindData();
} private void btnAdd_Click(object sender, System.EventArgs e)
{
Menu mTmp=null;
if(listMenu.SelectedIndex>-1)
{
if(listMenu.SelectedItem.Value!="")
{
mTmp=new Menu(null,mPortal.SysManager);
mTmp.Seek(listMenu.SelectedItem.Value);
}
}
mMenu=new Menu(mTmp,mPortal.SysManager);
Session["Menu"]=mMenu;
ClearControl();
btnSave.Enabled =true;
} private void ClearControl()
{
txtMenuItem.Text="";
txtMenuNo.Text ="";
txtMenuCaption.Text="";
txtMenuDesc.Text="";
txtMenuFuncNo.Text="";
cbxMenuType.SelectedIndex=0;
txtMenuImageURL.Text="";
} private void btnDelete_Click(object sender, System.EventArgs e)
{
if(mMenu!=null)
{
RemoveFromComboBox(mMenu);
mMenu.Delete();
}
} private void RemoveFromComboBox(Menu oldMenu)
{
string MenuNo=oldMenu.MenuNo; oldMenu.GetAllNextMenus();
foreach(Menu oMu in oldMenu.NextLevelMenus)
{
RemoveFromComboBox(oMu);
}
foreach(ListItem li in listMenu.Items)
{
if(li.Value==MenuNo)
{
listMenu.Items.Remove(li);
break;
}
}
}
private void InsertIntoComboBox(Menu newMenu)
{
string mMenuNo="";
ListItem mItem=null;
int mIndex=0; if(newMenu.MenuType==1)
{
if(newMenu.Parent!=null)
{
mMenuNo=newMenu.Parent.MenuNo;
foreach(ListItem li in listMenu.Items)
{
if(li.Value ==mMenuNo)
{
string s=""; s.PadLeft(newMenu.MenuLevel,' ');
mItem=new ListItem(s+ newMenu.MenuCaption,newMenu.MenuNo);
mIndex=listMenu.Items.IndexOf(li)+1;
break;
}
}
if(mItem!=null)
listMenu.Items.Insert(mIndex,mItem);
}
else
{
mItem=new ListItem(newMenu.MenuCaption,newMenu.MenuNo);
listMenu.Items.Add(mItem);
}
}
} private void btnSave_Click(object sender, System.EventArgs e)
{
bool isNew=mMenu.IsNewRecord; if(mMenu!=null)
{
SetValueToObject();
mMenu.Save();
if(isNew)
InsertIntoComboBox(mMenu);
else
UpdateList(mMenu);
}
} private void UpdateList(Menu mu)
{
if(listMenu.SelectedIndex>-1)
{
listMenu.SelectedItem.Text =mu.MenuCaption;
listMenu.SelectedItem.Value =mu.MenuNo ;
}
} private void btnCancel_Click(object sender, System.EventArgs e)
{
ClearControl();
} private void listMenu_SelectedIndexChanged(object sender, System.EventArgs e)
{
if(listMenu.SelectedIndex >-1)
{
if(listMenu.SelectedItem.Value !="")
{
if(mMenu==null)
mMenu=new Menu(null,mPortal.SysManager); mMenu.Seek(listMenu.SelectedItem.Value);
SetValueToControl();
Session["Menu"]=mMenu;
}
}
} private void LinkMenuBindData()
{
DataSet ds=new DataSet();
listLinkMenu.Items.Clear();
mPortal.SysManager.Connection.Fill("SELECT 'SELECTED'=CASE WHEN EXISTS(SELECT * FROM MENULINKREC WHERE MENULINKFROMNO=MENUNO AND MENULINKNO='"+mMenu.MenuNo+"') THEN 1 ELSE 0 END, MENUNO,MENUCAPTION=REPLICATE(' ',(MENULEVEL))+MENUNO+'-'+MENUCAPTION FROM MENUREC WHERE MENUNO<>'"+mMenu.MenuNo+"' ORDER BY MENUSUC",ref ds,"MENUREC");
listLinkMenu.DataSource =ds;
listLinkMenu.DataValueField ="SELECTED";
listLinkMenu.DataTextField ="MENUCAPTION";
listLinkMenu.DataBind(); foreach(ListItem li in listLinkMenu.Items)
{
li.Selected =(li.Value=="1");
}
ds.Dispose();
ds=null;
}
}
}
来指定当前选择项
页面首先执行Page_Load函数,然后才执行Button_Click()函数,
在Page_Load函数里面你把ddl的数据清空了,再填上新的数据,请问怎么可能会保存以前的选项(那个选项已经不存在了)
你应该在有AutoPostBack的哪个dll的SelecteIndexChanged消息处理函数里面邦定第二个dll的数据