如何使用值成员和数据成员从数据库填充控件时,如何防止下拉列表中出现重复值? [英] How do I prevent duplicate values in a dropdownlist while populating the control from database with value member and data member?

查看:55
本文介绍了如何使用值成员和数据成员从数据库填充控件时,如何防止下拉列表中出现重复值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

private void rightsload()

{

DataSet EmpDs = new DataSet();

EmpDs =(DataSet)Session [EmpId ];

DataRow dr = EmpDs.Tables [0] .NewRow();

dr [EmpName] =全部;

dr [EmpId] = 0;

EmpDs.Tables [0] .Rows.InsertAt(dr,0);



if(EmpDs.Tables [0] .Rows.Count> 0)

{



DataView view = new DataView(EmpDs。 Tables [0],null,EmpId,DataViewRowState.CurrentRows);

ddlEmp.DataTextField =EmpName;

ddlEmp.DataValueField =EmpId;

ddlEmp.DataSource = view;

ddlEmp.DataBind();

}

}









每次回发都会全部倍增,从而导致页面回发

private void rightsload()
{
DataSet EmpDs = new DataSet();
EmpDs = (DataSet)Session["EmpId"];
DataRow dr = EmpDs.Tables[0].NewRow();
dr["EmpName"] = "All";
dr["EmpId"] = 0;
EmpDs.Tables[0].Rows.InsertAt(dr, 0);

if (EmpDs.Tables[0].Rows.Count > 0)
{

DataView view = new DataView(EmpDs.Tables[0], null, "EmpId", DataViewRowState.CurrentRows);
ddlEmp.DataTextField = "EmpName";
ddlEmp.DataValueField = "EmpId";
ddlEmp.DataSource = view;
ddlEmp.DataBind();
}
}




The "All" multiplies during each postback and thus leads to postback of page too

推荐答案

EmpDs =(DataSet)Session [EmpId];



显示你在会话中有数据集。



当你在Session [EmpId]中保存数据时,你在数据库中运行SQL Query。

在SQL查询中使用DISTINCT关键字。







从Your_EMP_TABLE选择DISTINCT EmpId







第二个问题



在IsPostBack中写这个代码块检查赞



if(!IsPostBack){

DataRow dr = EmpDs.Tables [0]。 NewRow();

dr [EmpName] =全部;

dr [EmpId] = 0;

EmpDs。表[0] .Rows.InsertAt(dr,0);



}



我建议在IsPostBack中调用rightsload()检查

因为你需要在第一次加载页面时只运行一次这个方法,而不是每次回发。



喜欢



if(!IsPostBack)

{

rightsload();

}
EmpDs = (DataSet)Session["EmpId"];

is showing you have Dataset in session.

when you are saving data in Session["EmpId"] at that time you are running SQL Query in data base.
use DISTINCT Key word in your SQL Query.


Like
SELECT DISTINCT EmpId FROM Your_EMP_TABLE



FOR 2nd Problem

write this code block in IsPostBack check Like

if(!IsPostBack){
DataRow dr = EmpDs.Tables[0].NewRow();
dr["EmpName"] = "All";
dr["EmpId"] = 0;
EmpDs.Tables[0].Rows.InsertAt(dr, 0);

}

I would suggest call rightsload() in IsPostBack check
becouse you need run this method only once when page loads 1st time, not at every postback.

Like

if(!IsPostBack)
{
rightsload();
}


这篇关于如何使用值成员和数据成员从数据库填充控件时,如何防止下拉列表中出现重复值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆