页面(下文称父页面)实现功能是对多地用户的操作,具体如下:点击按钮,弹出有树状地区的模式对话框供选择,选择完地区返回后父页面立即显示出该地区的用户,之后对用户进行操作。
实现思路:父页面上放GridView,SqlDataSource,用HiddenField接收地区信息,在SqlDataSource的Selecting事件中更新SelectCommand的参数,达到更新GridView显示数据的目的。
然而在编码的过程中遇到问题:当地区信息返回至父页面后,Selecting事件无法激活,尽管在Page_Load方法中已对SelectCommand进行了重新赋值。于是给HiddenField添加ValueChanged事件,在该事件中对SelectCommand重新赋值,激活Selecting事件。
代码片段如下:
protected void Page_Load(object sender, EventArgs e)
{
if (HiddenField1.Value != "") // 选择了机构,则显示该机构的用户
{
ViewState["orgid"] = HiddenField1.Value; // 保存机构代码
HiddenField1.Value = "";
}
}protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
// 创建并添加存储过程的查询参数
SqlParameter pa = new SqlParameter("@orgID", DbType.String);
pa.Direction = ParameterDirection.Input;
pa.Value = ViewState["orgid"].ToString().Trim();
e.Command.Parameters.Add(pa);
}protected void HiddenField1_ValueChanged(object sender, EventArgs e)
{
if (ViewState["orgid"] != null) // 选择了机构,则显示该机构的用户
{
SqlDataSource1.SelectCommand = "select_user";
SqlDataSource1.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;
}
}
本文介绍了一种在父页面上通过地区筛选来实时更新用户列表的方法。利用GridView和SqlDataSource组件,结合HiddenField的ValueChanged事件触发,实现了地区选择后用户列表的即时刷新。
1274

被折叠的 条评论
为什么被折叠?



