2010-09-22 23 views
3

J'ai une liste de boutons radio dans une grille qui doit être liée à une colonne. Si la valeur dans une colonne est 0, le premier bouton radio est sélectionné, si 1, l'autre est sélectionné.lier la liste des boutons radio à la colonne de la vue en grille

Ce code, certaines d'entre elles est partiellement supprimé car il n'est pas nécessaire

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<>" 
    SelectCommand="" SelectCommandType="StoredProcedure" UpdateCommand=""> 
    <SelectParameters></SelectParameters> 
    <UpdateParameters></UpdateParameters> 
</asp:SqlDataSource> 
<asp:GridView ID="gvBlockDetail" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="curriculumyear,electiveid,blockid" DataSourceID="SqlDataSource1" 
    HorizontalAlign="Left" CellPadding="1" CssClass="news" GridLines="None" 
    BorderColor="#ebe9e2" BorderStyle="Solid" BorderWidth="1" > 
    <AlternatingRowStyle BackColor="#ebe9e2" /> 
    <HeaderStyle BackColor="#660000" ForeColor="White" Font-Size="Small" /> 
    <RowStyle Font-Size="9pt" Wrap="false" ForeColor="#660000" HorizontalAlign="Center" /> 
    <Columns> 
     <asp:TemplateField HeaderText="Add/Remove"> 
      <HeaderStyle Width="15%" /> 
      <ItemStyle Wrap="false" Width="80px" /> 
      <ItemTemplate> 
       <asp:RadioButtonList ID="rblAddRemove" runat="server" RepeatDirection="Horizontal"> 
        <asp:ListItem Text="Add" Value="0"></asp:ListItem> 
        <asp:ListItem Text="Remove" Value="1"></asp:ListItem> 
       </asp:RadioButtonList> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Block"> 
      <HeaderStyle Width="15%" /> 
      <ItemStyle Wrap="false" Width="50px" /> 
      <ItemTemplate> 
       <asp:Label ID="lblBlock" runat="server" Text='<%# Bind("Block") %>'></asp:Label> 
       <asp:Label ID="lblSection" runat="server" Text='<%# Bind("Section") %>'></asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:BoundField DataField="daterange" HeaderText="Dates" ReadOnly="True" SortExpression="daterange" /> 
     <asp:BoundField DataField="credithours" HeaderText="Credit Hrs" 
                SortExpression="credithours" HeaderStyle-Width="10%" ItemStyle-Width="10%" /> 
     <asp:TemplateField HeaderText="Students&lt;br&gt;Per Block" HeaderStyle-Width="15%" SortExpression="studentsperblock"> 
      <EditItemTemplate> 
       <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("studentsperblock") %>'></asp:TextBox> 
      </EditItemTemplate> 
      <ItemTemplate> 
       <asp:TextBox ID="txtStudentsPerBlock" runat="server" MaxLength="3" Width="40px" Text='<%# Bind("studentsperblock") %>'></asp:TextBox> 
      </ItemTemplate> 
     </asp:TemplateField>  
     <asp:BoundField DataField="enrolled" HeaderText="Enrolled" ReadOnly="True" 
                SortExpression="enrolled" ItemStyle-Width="200px" /> 
     <asp:BoundField DataField="blockid" HeaderText="blockid" ReadOnly="True" 
                SortExpression="blockid" Visible="false" /> 
    </Columns> 
</asp:GridView> 

Codebehind:

Protected Sub gvBlockDetail_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvBlockDetail.RowDataBound 

End Sub 

Répondre

4

Vous pouvez essayer la liaison en ligne:

<asp:RadioButtonList ID="rblAddRemove" runat="server" RepeatDirection="Horizontal" SelectedValue='<%# Bind("YOURCOLUMN") %>'> 
    <asp:ListItem Text="Add" Value="0"></asp:ListItem> 
    <asp:ListItem Text="Remove" Value="1"></asp:ListItem> 
</asp:RadioButtonList> 

yourcolumn est la colonne int que vous avez décrite.

Ou via l'événement RowDataBound. (Pseudocode, les propriétés pourraient avoir un nom différent et je suis en utilisant C#)

Protected Sub gvBlockDetail_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvBlockDetail.RowDataBound 
    if(e.Row.RowType == RowType.DataRow) 
    { 
    RadioButtonList rbl = e.Row.FindControl("rblAddRemove") as RadioButtonList; 
    if(rbl != null) 
    { 
    rbl.SelectedValue = ((YOURDATAITEM)(e.Row.DataItem).YourProperty.ToString(); 
    } 
    } 
End Sub 

Modifier: Je vois que vous n'utilisez pas des classes personnalisées. Vous devez ajuster la ligne avec YOURDATAITEM. Utilisez la montre rapide pour apprendre à lancer l'objet pour obtenir la propriété désirée.

+0

C'était légèrement différent, mais vous m'avez indiqué dans la bonne direction. J'apprécie vraiment l'aide. –

+0

SelectedValue = '<% Bind ("YOURCOLUMN")>' doit être: SelectedValue = '<% # Bind ("VOTRECOLUMN")%>'> – Tillito

+0

@Tillito: J'ai modifié ma réponse, merci de l'avoir signalé;) – citronas