2010-11-15 2 views
0

У меня есть одно приложение asp.net, в котором у меня есть одно выпадающее меню, привязанное к набору данных. Но после выбора одного элемента выпадающее значение очищается от всех значений. Как мы можем решить эту проблему?Dropdown очищается

Это мой раскрывающийся список в дизайне страницы:

<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()); 
     } 

    } 

Заранее спасибо ..

+6

Просьба также указать исходный код ddlProduct_SelectedIndexChanged. –

+0

Поскольку проблема возникает при выборе элемента, нам понадобится код SelectedIndexChanged, который запрашивает Тим. – knight0323

+1

У вас есть viewstate для страницы? – patmortech

ответ

1

С вашего вопроса, если я правильно понимаю, вы не хотите, чтобы раскрывающийся список перегруппировался, если он заполнен. Также, пожалуйста, проверьте свой ViewState, это не должно происходить, если вы не отключили ViewState

protected void Page_Load(object sender, EventArgs e) 
{   
    if (!IsPostBack && ddlProduct.Items.count <=0) 
     BindProductDdl(); 

}

1

Установите свойство AppendDataBoundItems из выпадающего списка, чтобы верно, и это позволит вам иметь сочетание элементов с привязкой к данным и не элементы с привязкой к данным (в противном случае, что вставка заявление очистить список)

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.appenddatabounditems.aspx

+0

Он вставляет новый элемент ПОСЛЕ привязки данных, поэтому я не думаю, что это проблема. AppendDataBoundItems предназначен для элементов, которые вы добавляете перед привязкой данных (например, в вашей разметке), отсюда часть «Добавить». – patmortech

0

есть ли у вас отключен ViewState на странице? Поскольку вы загружаете только элементы в раскрывающийся список при первом загрузке страницы, если viewstate не включен, после обратной передачи ничего не будет в списке.

0

Не положительный, но я видел на других языках и ложной интерпретации ...

У вас есть свой продукт Value как конвертер ToDecimal, который подразумевает, например, 99.999.

Если ваш идентификатор, к которому вы привязываетесь, основан на целочисленном числе (то есть: Целочисленный базис), связанное значение не будет соответствовать ... даже если Value = 1 vs Value = 1.00, оно не будет соответствовать и не будет считаться действительным «значением», которое соответствует вашему списку. Преобразуйте свой ответ на целое/целое число, и он может делать то, что вы ожидаете.

0

Не видя полного источника для страницы, я просто размышляю, но вы отключили ViewState на странице? Если это так, DropDownList не может сохранять свои значения между postbacks, и списки должны быть перезагружены каждый раз.

Смежные вопросы