2010-09-22 5 views
3

У меня есть список переключателей в виде сетки, который должен быть привязан к столбцу. Если значение в столбце равно 0, выбирается первая радиокнопка, если 1, другая выбрана.привязать список переключателей к столбцу в gridview

Это код, некоторые из них частично удален, поскольку он не является необходимым

<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 

ответ

4

Вы можете попробовать рядный связывания:

<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 - это столбец int, который вы описали.

Или через мероприятие RowDataBound. (Псевдокод, свойства могут иметь другое имя, и я использую 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 

Edit: Я вижу, что вы не используете пользовательские классы. Вам нужно настроить линию с помощью YOURDATAITEM. Используйте быстрый просмотр, чтобы узнать, как отличить объект, чтобы получить требуемое свойство.

+0

Это было немного другое, но вы указали мне в правильном направлении. Я определенно ценю помощь. – 2010-09-23 13:56:05

+0

SelectedValue = '<% Bind ("YOURCOLUMN")>' должно быть: SelectedValue = '<% # Bind ("YOURCOLUMN")%>'> – Tillito

+0

@Tillito: Я отредактировал свой ответ, спасибо, указав его;) – citronas