后台管理前台要显示的字段
2014-12-31 15:33
267 查看
一个绑定了datatable的CheckBoxList默认显示已经勾选的项,假如绑定的数据表叫做test,该表的字段有name,age,sex,idNumber。要使得选择的字段显示,首先让所有的字段都加上一个标记,假如'Y'为选中,'N'为不选中,首先让该4个字段都为‘Y’
那么在后台管理页面上的效果就是:
而在前台查询页面效果是:
这样就会显示所选中的要显示的字段。
但是如果要只显示姓名,年龄,性别,而不显示身份证号,则只把idNumber这个字段的勾去掉就行了。点击确认后,数据库中的标记就成了这样:
这时前台显示界面就成了这样:
这样就做到了后台控制前台显示字段的要求了。
具体的代码如下:
后台管理页面web层的代码:
/// <summary>
/// 选择下拉框事件,显示该tableName下的状态为‘Y’的fieldsName
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
static string tableName;
protected void DropDownList_tableName_SelectedIndexChanged1(object sender, EventArgs e)
{
tableName = DropDownList_tableName.SelectedItem.Text.ToString();
BackMrgBLL bmbll = new BackMrgBLL();
DataTable dt = bmbll.queryFieldsName(tableName);//dt是所选表名中的所有字段名
//RepInfo.DataSource = dt;
//RepInfo.DataBind();
//获取已经选中的值
DataTable dtSelected = new DataTable();
dtSelected = bmbll.querySelectedFieldsName(tableName);
//绑定数据到复选框
CheckBoxList1.DataSource = dt;
CheckBoxList1.DataTextField = "fieldsName";
CheckBoxList1.DataBind();
for (int i = 0; i < dtSelected.Rows.Count; i++)
{
for (int j = 0; j < CheckBoxList1.Items.Count; j++)
{
if (dtSelected.Rows[i]["fieldsName"].ToString().Trim() == CheckBoxList1.Items[j].Value.Trim())
{
CheckBoxList1.Items[j].Selected = true;
}
}
}
}
/// <summary>
/// 修改显示的字段,确定按钮事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOK_Click(object sender, EventArgs e)
{
//selectedValue = CheckBoxList1.SelectedValue.ToString();
//CheckBoxList cl = new CheckBoxList();
ArrayList listSelected = new ArrayList();
ArrayList listUnSelected = new ArrayList();
for (int i = 0; i < CheckBoxList1.Items.Count; i++)
{
if (CheckBoxList1.Items[i].Selected)
{
string str = CheckBoxList1.Items[i].Text.Trim();
listSelected.Add(str);
}
else
{
string str = CheckBoxList1.Items[i].Text.Trim();
listUnSelected.Add(str);
}
}
bllBack = new BackMrgBLL();
bool isSelect = bllBack.modifyFieldsState(listSelected, "Y", tableName);//把选中的更改为Y
bool isUnSelect = bllBack.modifyFieldsState(listUnSelected, "N", tableName);//把未选中的更改为N
if (isSelect == true && isUnSelect == true)
{
Response.Write(" <script language=javascript>alert('修改成功 ') </script>");
}
}略过B层,D层的代码如下:
/// <summary>
/// 后台,显示该表名下的所有设置为“显示”的字段
/// </summary>
/// <param name="tableName"></param>
/// <returns></returns>
public DataTable querySelectedFieldsName(string tableName)
{
DataTable dt = new DataTable();
SqlHelper sqlhelper = new SqlHelper();
string strsql = "select * from t_FieldsName where tableName=@tableName and [state]='Y'";
SqlParameter[] paras = { new SqlParameter("@tableName", tableName) };
dt = sqlhelper.ExecuteSql(strsql, CommandType.Text, paras);
return dt;
}
/// <summary>
/// 修改状态为Y或者N
/// </summary>
/// <param name="tableName"></param>
/// <returns></returns>
public bool modifyFieldsState(ArrayList listFieldsName,String oper,string tableName)
{
string fieldsName;
int res;
SqlHelper sqlhelper = new SqlHelper();
for (int i = 0; i < listFieldsName.Count; i++)
{
fieldsName = listFieldsName[i].ToString().Trim();
string strsql = "update t_FieldsName set [state]=@oper where fieldsName=@FieldsName and tableName=@tableName";
SqlParameter[] paras = { new SqlParameter("@FieldsName", fieldsName), new SqlParameter("@oper", oper),new SqlParameter("@tableName",tableName) };
res = sqlhelper.ExecuteNonQuery(strsql, CommandType.Text,paras);
if (res == 0)
{
return false;//更新失败
}
}
return true;
}
}
后台管理就完成了,而前台要显示的仅仅是个查询出字段的state为‘Y’的并绑定数据就行了。
那么在后台管理页面上的效果就是:
而在前台查询页面效果是:
这样就会显示所选中的要显示的字段。
但是如果要只显示姓名,年龄,性别,而不显示身份证号,则只把idNumber这个字段的勾去掉就行了。点击确认后,数据库中的标记就成了这样:
这时前台显示界面就成了这样:
这样就做到了后台控制前台显示字段的要求了。
具体的代码如下:
后台管理页面web层的代码:
/// <summary>
/// 选择下拉框事件,显示该tableName下的状态为‘Y’的fieldsName
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
static string tableName;
protected void DropDownList_tableName_SelectedIndexChanged1(object sender, EventArgs e)
{
tableName = DropDownList_tableName.SelectedItem.Text.ToString();
BackMrgBLL bmbll = new BackMrgBLL();
DataTable dt = bmbll.queryFieldsName(tableName);//dt是所选表名中的所有字段名
//RepInfo.DataSource = dt;
//RepInfo.DataBind();
//获取已经选中的值
DataTable dtSelected = new DataTable();
dtSelected = bmbll.querySelectedFieldsName(tableName);
//绑定数据到复选框
CheckBoxList1.DataSource = dt;
CheckBoxList1.DataTextField = "fieldsName";
CheckBoxList1.DataBind();
for (int i = 0; i < dtSelected.Rows.Count; i++)
{
for (int j = 0; j < CheckBoxList1.Items.Count; j++)
{
if (dtSelected.Rows[i]["fieldsName"].ToString().Trim() == CheckBoxList1.Items[j].Value.Trim())
{
CheckBoxList1.Items[j].Selected = true;
}
}
}
}
/// <summary>
/// 修改显示的字段,确定按钮事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOK_Click(object sender, EventArgs e)
{
//selectedValue = CheckBoxList1.SelectedValue.ToString();
//CheckBoxList cl = new CheckBoxList();
ArrayList listSelected = new ArrayList();
ArrayList listUnSelected = new ArrayList();
for (int i = 0; i < CheckBoxList1.Items.Count; i++)
{
if (CheckBoxList1.Items[i].Selected)
{
string str = CheckBoxList1.Items[i].Text.Trim();
listSelected.Add(str);
}
else
{
string str = CheckBoxList1.Items[i].Text.Trim();
listUnSelected.Add(str);
}
}
bllBack = new BackMrgBLL();
bool isSelect = bllBack.modifyFieldsState(listSelected, "Y", tableName);//把选中的更改为Y
bool isUnSelect = bllBack.modifyFieldsState(listUnSelected, "N", tableName);//把未选中的更改为N
if (isSelect == true && isUnSelect == true)
{
Response.Write(" <script language=javascript>alert('修改成功 ') </script>");
}
}略过B层,D层的代码如下:
/// <summary>
/// 后台,显示该表名下的所有设置为“显示”的字段
/// </summary>
/// <param name="tableName"></param>
/// <returns></returns>
public DataTable querySelectedFieldsName(string tableName)
{
DataTable dt = new DataTable();
SqlHelper sqlhelper = new SqlHelper();
string strsql = "select * from t_FieldsName where tableName=@tableName and [state]='Y'";
SqlParameter[] paras = { new SqlParameter("@tableName", tableName) };
dt = sqlhelper.ExecuteSql(strsql, CommandType.Text, paras);
return dt;
}
/// <summary>
/// 修改状态为Y或者N
/// </summary>
/// <param name="tableName"></param>
/// <returns></returns>
public bool modifyFieldsState(ArrayList listFieldsName,String oper,string tableName)
{
string fieldsName;
int res;
SqlHelper sqlhelper = new SqlHelper();
for (int i = 0; i < listFieldsName.Count; i++)
{
fieldsName = listFieldsName[i].ToString().Trim();
string strsql = "update t_FieldsName set [state]=@oper where fieldsName=@FieldsName and tableName=@tableName";
SqlParameter[] paras = { new SqlParameter("@FieldsName", fieldsName), new SqlParameter("@oper", oper),new SqlParameter("@tableName",tableName) };
res = sqlhelper.ExecuteNonQuery(strsql, CommandType.Text,paras);
if (res == 0)
{
return false;//更新失败
}
}
return true;
}
}
后台管理就完成了,而前台要显示的仅仅是个查询出字段的state为‘Y’的并绑定数据就行了。
相关文章推荐
- 在DEDECMS后台管理文档列表中,需要在列表中显示自定义的字段内容
- 如何在django的admin后台管理中显示多对多字段的值
- 工作日志--openSNS二次开发--根据用户组前台显示管理后台按钮
- django administration 的后台管理界面不显示具体字段
- easyui-datagrid行编辑,后台以主表为基表关联从表进行查询数据后,在前台行编辑字段内容的显示
- 帝国cms添加栏目前台显示正常,后台管理栏目中不显示
- admin.ModelAdmin 后台管理关联对象,某个字段怎么显示值
- 前台根据后台值 操作字段 显示或select选中状态
- 疯狂.NET 通用权限设计 C\S后台管理,B\S前台调用源码样例程序源码下载之 --- 操作权限《转》
- gridview中把字段超出范围的用...代替 但前台文本提示效果需显示详细信息
- 疯狂.NET 通用权限设计 C/S后台管理,B/S前台调用源码样例程序源码下载之 --- 操作权限
- 在前台显示,并且在后台可以配置的静态块.txt
- ASP.NET开源框架之HIPPO技术内幕(六)--后台管理与前台展示
- 疯狂.NET 通用权限设计 C/S后台管理,B/S前台调用源码样例程序源码下载之 --- 操作权限
- asp.net后台对sql语句排序,筛选,gridview隐藏过长的字符串鼠标放上去显示全部,dropdownlist在前台显示拼接字符串
- 疯狂.NET 通用权限设计 C\S后台管理,B\S前台调用源码样例程序源码下载之 --- 操作权限
- 前台列表动态显示后台数据并链接查询
- 前台从数据库获取的字段在后台截取字符串
- 求助:关于后台获取时间,前台显示倒计时的问题
- 疯狂.NET 通用权限设计 C/S后台管理,B/S前台调用源码样例程序源码下载之 --- 数据集权限