我有一个asp.net应用程序,其中有一个绑定到dataset的下拉列表。但是在选择一个项目之后,下拉菜单清除了所有的值,我们如何解决这个问题呢?
这是我在设计页面中的下拉列表:
<asp:DropDownList ID="ddlProduct" runat="server" CssClass="textEntry" Width="300px"
AutoPostBack="True" OnSelectedIndexChanged="ddlProduct_SelectedIndexChanged">
</asp:DropDownList>绑定代码如下所示。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
BindProductDdl();
}
private void BindProductDdl()
{
Products objProducts = new Products();
dsProducts dsProduct = new dsProducts();
ListItem olst = default(ListItem);
olst = new ListItem(" Select", "0");
dsProduct = objProducts.GetDataset("");
ddlProduct.DataSource = dsProduct;
ddlProduct.DataTextField = "Product";
ddlProduct.DataValueField = "Id";
ddlProduct.DataBind();
ddlProduct.Items.Insert(0, olst);
}
protected void ddlProduct_SelectedIndexChanged(object sender, EventArgs e)
{
Products objProducts = new Products();
dsProducts dsProduct = new dsProducts();
string criteria = "";
if (ddlProduct.SelectedItem.Text != " Select")
{
string id = ddlProduct.SelectedItem.Value;
criteria = "Id='" + id + "'";
dsProduct = objProducts.GetDataset(criteria);
productValue = Convert.ToDecimal(dsProduct.tblProducts.Rows[0]["Value"].ToString());
}
}提前谢谢..
发布于 2010-11-16 11:16:27
根据你的问题,如果我理解正确的话,如果填充了下拉列表,那么您不希望重新绑定它。此外,请检查您的视图状态,这应该不会发生,除非您已禁用视图状态
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack && ddlProduct.Items.count <=0 )
BindProductDdl();}
发布于 2010-11-16 00:48:53
将下拉列表的AppendDataBoundItems属性设置为true,这将允许您混合使用数据绑定项和非数据绑定项(否则,insert语句将清除您的列表)
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.appenddatabounditems.aspx
发布于 2010-11-16 10:08:29
您是否在页面上禁用了视图状态?由于只在第一次加载页面时才将项加载到dropdownlist中,因此如果未启用viewstate,则回发后列表中将不会有任何内容。
https://stackoverflow.com/questions/4186663
复制相似问题