2009-06-26 10 views
8

Sto collegando un GridView a un'origine dati oggetto. Il gridview contiene un TemplateField che contiene un RadioButtonList con ListItem definito inline.
Desidero essere in grado di associare il valore SelectedVelue di RadioButtonList alla stessa tabella sottostante delle altre colonne della griglia, ma non funziona!Associazione dati di RadioButtonList usando SelectedValue ... possibile?

La sintassi è errata oppure è impossibile e richiede il codice di loop per selezionare singolarmente l'elemento corretto in ogni riga?

<llblgenpro:LLBLGenProDataSource ID="llbComputerApplication" DataContainerType="EntityCollection" runat="server"></llblgenpro:LLBLGenProDataSource> 
     <asp:GridView ID="gridComputerApps" DataSourceID="llbComputerApplication" runat="server" AutoGenerateColumns="False" 
      EmptyDataText ="NO APPLICATIONS FOUND FOR THIS COMPUTER." 
      DataKeyNames="ComputerID, ApplicationID" EnableViewState="False" 
      style="border-style:dotted;border-width:thin" 
      > 
      <Columns> 
       <asp:BoundField DataField="ApplicationID" HeaderText="Application ID" SortExpression="ApplicationID" Visible="True" /> 
       <asp:TemplateField HeaderText="Application Name"><ItemTemplate><%#Eval("Application.ApplicationName")%></ItemTemplate></asp:TemplateField> 
       <asp:TemplateField HeaderText="Normalized Name"><ItemTemplate><%#Eval("Application.NormalizedAppName")%></ItemTemplate></asp:TemplateField> 
       <asp:TemplateField HeaderText="Notes"><ItemTemplate><%#Eval("Application.NormalizedNotes")%></ItemTemplate></asp:TemplateField> 
       <asp:TemplateField> 
        <HeaderTemplate> 
        </HeaderTemplate> 
        <ItemTemplate> 
         <asp:RadioButtonList SelectedValue='<%#Eval("RequirementOption")%>' ID="rblRequirementOption" RepeatDirection="Horizontal" runat="server"> 
          <asp:ListItem Value="Need Now" Text="Need Now"></asp:ListItem> 
          <asp:ListItem Value="Need Someday" Text="Need Someday"></asp:ListItem> 
          <asp:ListItem Value="Do Not Need" Text="Do Not Need"></asp:ListItem> 
         </asp:RadioButtonList> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:BoundField DataField="NormalizedNotes" HeaderText="Notes" Visible="False" /> 
      </Columns> 
     </asp:GridView> 

risposta

18

Che cosa dovrebbe funzionare. stai ricevendo un errore? Ecco un esempio di lavoro copiato dal mio attuale progetto. Mi sto legando a un campo di bit nullable, quindi ho un elemento della lista nascosta per accettare i valori null.

<asp:RadioButtonList runat="server" ID="MyRbl" SelectedValue='<%# Bind("MyRblField") %>' 
    CssClass="NormalTextBox" RepeatDirection="Horizontal"> 
    <asp:ListItem Value="false" Text="No" /> 
    <asp:ListItem Value="true" Text="Yes" /> 
    <asp:ListItem Value="" Text="" style="display: none" /> 
</asp:RadioButtonList> 
+0

Ho provato vari modi ... la particolare versione che ho postato non rende nemmeno il GridView !!! Considerando che se lo prendo, tutte le righe vengono visualizzate, ma nessuna è selezionata (anche se hanno delle righe nel database (corrispondente a ListItem.Value) – tbone

+0

stai ricevendo un errore? –

+0

No, nessun errore. Eval piuttosto che Bind come sei .... Sono sicuro che ho provato anche a legare. Ma questo * dovrebbe * funzionare, giusto? Stai legando MyRbl all'origine dati sottostante il tuo datagrid vero? – tbone

4

Ho anche avuto questo problema (niente selezionato nella RadioButtonList) quando si collegano con i valori booleani in MS SQL:

radDefault.Items.Add(new ListItem("Yes", "true")); 
radDefault.Items.Add(new ListItem("No", "false")); 

Nel mio caso, la soluzione è stata di capitalizzare la prima lettera del vero/falsi valori, allora la radiobuttonlistworked come previsto:

radDefault.Items.Add(new ListItem("Yes", "True")); 
radDefault.Items.Add(new ListItem("No", "False")); 

Oppure, in modo dichiarativo:

<asp:RadioButtonList runat="server" ID="radDefault" SelectedValue='<%# Bind("DB_FIELD") %>'> 
    <asp:ListItem Value="False" Text="No" /> 
    <asp:ListItem Value="True" Text="Yes" /> 
</asp:RadioButtonList> 
+1

So che questo post è vecchio, ma volevo solo commentare che l'involucro è importante. Questo lo ha risolto anche per me. Grazie – ConditionRacer

0
<asp:RadioButtonList runat="server" ID="MyRbl" SelectedValue='<%# Bind("MyRblField") %>' 
    CssClass="NormalTextBox" RepeatDirection="Horizontal"> 
    <asp:ListItem Value="false" Text="No" /> 
    <asp:ListItem Value="true" Text="Yes" /> 
    <asp:ListItem Value="" Text="" selected="true" style="display: none" /> 
</asp:RadioButtonList> 

Mi funziona ..... gnanasekar.s vilangulathur

1

Non mi piaceva l'idea di utilizzare i CSS per nascondere un elemento. Invece, ho trovato this solution per aggiungere un elemento vuoto ma rimuoverlo nel codice sottostante.

<asp:RadioButtonList ID="MyRadioButtonList" runat="server" 
    SelectedValue='<%# Bind("Blah") %>' 
    OnDataBound="MyRadioButtonList_DataBound"> 
     <asp:ListItem Value=""></asp:ListItem> 
     <asp:ListItem Value="A"></asp:ListItem> 
     <asp:ListItem Value="B"></asp:ListItem> 
     <asp:ListItem Value="C"></asp:ListItem> 
</asp:RadioButtonList> 

protected void MyRadioButtonList_DataBound(object sender, EventArgs e) 
{ 
     RadioButtonList list = (RadioButtonList)sender; 
     ListItem blank = list.Items.FindByValue(""); 
     if (blank != null) 
      list.Items.Remove(blank); 
}