2016-07-25 16 views
0

Ich habe ein GridView-Steuerelement mit einer Spalte, die eine datengebundene RadioButtonList enthält. Die RBL ist ordnungsgemäß an ihre DataTable gebunden, wird jedoch nicht in der GridView angezeigt. Das Hinzufügen von ListItems im Markup wird angezeigt, und ein Label-Steuerelement wird angezeigt - ich habe diese beiden Tests durchgeführt. Sieht jemand was ich vermisse?Datengebundene RadioButtonList-Bindung, aber jetzt in GridView angezeigt

TIA für jede Hilfe. Mike

Markup:

<asp:TemplateField HeaderText="Preset Text" HeaderStyle-HorizontalAlign="Center"> 
    <ItemTemplate> 
     <asp:RadioButtonList ID="rblPresetText" runat="server" DataValueField="pKey" DataTextField="Contents" GroupName="PresetText" RepeatDirection="Vertical"></asp:RadioButtonList> 
    </ItemTemplate> 
</asp:TemplateField> 

Codebehind:

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load 

     GlobalVar.LoadData(Session("UserPKey")) 
     Header1.ConnectionStr = GlobalVar.ConnectString 
     Header1.HDLawFirm = GlobalVar.LawFirmDir 

     If Page.IsPostBack = False Then        
      FillNotesDataSet() 
      BindNotesGrid() 
      BindPresetTextRadioButtonList() 
     End If 

    End Sub 

Protected Sub BindPresetTextRadioButtonList() 

     Dim DAL As New DataAccessLayer 
     Dim dtPresetText As New DataTable 
     Dim rblPresetText As New RadioButtonList 

     dtPresetText = DAL.GetTextPickerTextForUser(Session("ClientKey"), Session("UserPKey")) 

     rblPresetText.DataSource = dtPresetText 
     rblPresetText.DataBind() 

    End Sub 
+0

Haben Sie überprüft, dass 'dtPresetText' nicht leer ist? – Andrei

+0

Ja, es hat 13 Zeilen und ich kann sogar Werte von der DDL im unmittelbaren Fenster nach der Bindung erhalten. – Mike

Antwort

1

Sie erklären die Radiobuttonlist in ein Template aber, statt dass die Kontrolle für jede Zeile abzurufen, können Sie eine neue Radiobuttonlist erstellen, die Sie füllen . Da dieses neue Steuerelement in keinem Container oder in der GridView enthalten ist, wird es auf der Seite nicht angezeigt.

Sie können die Radiobuttonlist Ihrer Template im RowDataBound-Ereignishandler des Gridview erhalten und die Daten an, dass die Steuerung binden:

protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     RadioButtonList rblPresetText = e.Row.FindControl("rblPresetText") as RadioButtonList; 

     // Bind the data to the RadioButtonList 
     ... 
    } 
} 
+0

Ahhhh, das hat wunderbar funktioniert. Vielen Dank @ConnorsFan! – Mike