2013-11-26 3 views
-1

Я использую ASP.NET, у меня есть раскрывающийся список внутри сетки (radGrid).DropDownList внутри Grid

Что мне нравится, так это то, что, когда появляется раскрывающийся список, мне по умолчанию нравится «Пожалуйста, выберите», только если поле, обязательное для него, пустое. Кроме того, мне нравится получать значение из DataSource.

Я следующий код:

 <asp:DropDownList ID="ddlEroGroup" runat="server" DataSourceID="EroGroupSource" DataTextField="Value" DataValueField="Value" AppendDataBoundItems="true" OnDataBound=" erogroupDropDown_DataBound" Text='<%# Bind("EroGroup") %>'>        
    </asp:DropDownList> 

Для DataSource здесь есть код:

<asp:SqlDataSource ID="EroGroupSource" runat="server" ConnectionString="<%$ ConnectionStrings:ISQL %>"   
     SelectCommand="Select Value from LookupValues where Category = 'EroGroup'"> 
    </asp:SqlDataSource> 

Вот код в код-за:

protected void ErogroupDropDown_DataBound(object sender, EventArgs e) 
    { 
     DropDownList list = sender as DropDownList; 

     if (list != null) 
     { 
      list.Items.Insert(0, new ListItem("Please Select", "")); 
     } 
    } 

Когда он делает привязку, если значение пустое, я получаю сообщение о том, что он не смог найти значение.

ответ

0

Используйте для этого событие Grid PreRender. Возможно, вам нужно будет присвоить значение какой-либо скрытой метке и получить доступ к ней внутри метода prerender и назначить ее выпадающему меню.

<ItemTemplate> 
    <asp:Label runat="server" ID="lblValue" Text='<%# Eval("YourValue")%>' Visible="false" /> 
    <asp:DropDownList ID="ddlEroGroup" runat="server" DataSourceID="EroGroupSource" DataTextField="Value" DataValueField="Value" AppendDataBoundItems="true" OnDataBound=" erogroupDropDown_DataBound" Text='<%# Bind("EroGroup") %>'>        
    </asp:DropDownList> 
<asp:SqlDataSource ID="EroGroupSource" runat="server" ConnectionString="<%$ ConnectionStrings:ISQL %>"   
     SelectCommand="Select Value from LookupValues where Category = 'EroGroup'"> 
    </asp:SqlDataSource> 
</ItemTemplate> 

На код позади:

protected void GridView1_PreRender(object sender, EventArgs e) 
{ 
    for(int i=0;i<Gridview1.Rows.Count;i++) 
    { 
     Label lblValue = (Label)Gridview1.Row[i].FindControl('lblValue'); 
     DropdownList ddl = (DropdownList) Gridview1.Row[i].FindControl('ddlEroGroup'); 
     ddl.Items.Insert(0, new ListItem("Please Select", "")); 
     if(lblValue!=null && !String.IsNullOrEmpty(lblValue.Text)) 
      ddl.SelectedValue = lblValue.Text; 

    } 

} 
+0

Спасибо Я думаю, мой вопрос, если я делаю Bind и если значение пусто, как я настроить его Пожалуйста выберите? –

+0

см. Обновленный ответ, если это помогает –

0

попробовать:

protected void ErogroupDropDown_DataBound(object sender, EventArgs e) 
    { 
     DropDownList list = sender as DropDownList; 

     if (list.Items.Count.equals(0)) 
     { 
      list.Items.Insert(0, new ListItem("Please Select", "")); 
     } 
    } 
Смежные вопросы