您的位置:首页 > 其它

后台管理前台要显示的字段

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’的并绑定数据就行了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐