2017-07-07 6 views
0

Repeaterコントロール内からRadioButtonListを動的に設定しようとしたのは今回が初めてです。これまではあまりうまくいきません。しかし、私はバグに実行していますRepeaterコントロール内のデータベースからRadioButtonListを動的に設定する方法

protected void fillRepeater_onitembound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     sql = "select PurchaseTypeID,PurchaseType from PurchaseType"; 
     object obj = null; 
     ds = obj.openDataset(sql); 
     ListItem li; 

     RadioButtonList rbtl = (RadioButtonList)e.Item.FindControl("radioatt"); 
     if (rbtl != null) 
     { 
      for (int i = 0; i < dt.Rows.Count; i++) 
      { 
       li = new ListItem(); 
       li.Text = dt.Rows[i]["PurchaseType"].ToString(); 
       li.Value = dt.Rows[i]["PurchaseTypeID"].ToString(); 
       rbtl.Items.Add(li); 
      } 
     } 
    } 
} 

<asp:Repeater ID="Repeater2" runat="server" OnItemDataBound="fillRepeater_onitembound"> 
    <ItemTemplate> 
    <table style="width:100%;border: 1px solid black;"> 
     <tr> 
      <td style="width:50%;border-collapse: collapse;border: 1px solid black;"> 
      Purchased:<asp:radiobuttonlist ID="rblPurchaseType" runat="server" RepeatDirection="Horizontal" TextAlign="Right" style="display:inline;"></asp:radiobuttonlist></td> 
       <td style="text-align:center;border: 1px solid black;"> 
      </td> 
     </tr> 
     <tr> 
    </table> 
    ... 
    ... 
    ... 
    </asp:Repeater> 

を「オブジェクト」が含まれていない私は、私はおそらくそれを書いた人のために働いているここで見つけるこのコードをしようとしています

'openDataset'の定義と 'openDataset'の拡張メソッドはありません 'オブジェクト'の型の最初の引数を受け入れることができました(使用しているディレクティブまたはアセンブリ参照がありませんか?)

何か問題がありますか?

UPDATE:

public DataTable LoadDataFromDatabase(string query) 
    { 
     DataTable dt = new DataTable(); 

     using (SqlConnection connection = new SqlConnection(connStr)) 
     using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection)) 
     { 
      try 
      { 
       adapter.Fill(dt); 
      } 
      catch (Exception ex) 
      { 
       //handle error if needed 
      } 
     } 

     return dt; 
    } 
    string myQuery = "SELECT PurchaseTypeID, PurchaseType FROM PurchaseType ORDER BY PurchaseType"; 
    string rbtl = Repeater2.FindControl("rblPurchaseType"); 
    rbtl.DataSource = LoadDataFromDatabase(myQuery); 
    rbtl.DataTextField = "PurchaseType"; 
rbtl.DataValueField = "PurchaseTypeID"; 
rbtl.DataBind(); 

答えて

0

正確objは何? openDatasetプロパティを持つものにキャストしない限り、これは決してうまくいかないでしょう。

私は何を使用すると、今、あなたは迅速かつ簡単なデータベースとバインドからあなたに必要なコンテンツを取得するには、このメソッドを使用することができますクエリからDataTableを返す単純な方法であり、RadioButtonList

public DataTable LoadDataFromDatabase(string query) 
{ 
    DataTable dt = new DataTable(); 

    using (SqlConnection connection = new SqlConnection(YourConnectionString)) 
    using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection)) 
    { 
     try 
     { 
      adapter.Fill(dt); 
     } 
     catch (Exception ex) 
     { 
      //handle error if needed 
     } 
    } 

    return dt; 
} 

にそれをバインドしますそれはあなたが必要とするコントロールにします。 ASPX内のRadioButtonのIDがrblPurchaseTypeであり、あなたはこれらが同じであることを確認し、radioatt上にFindControlを使用するので

string myQuery = "SELECT PurchaseTypeID, PurchaseType FROM PurchaseType ORDER BY PurchaseType"; 

rbtl.DataSource = LoadDataFromDatabase(myQuery); 
rbtl.DataTextField = "PurchaseType"; 
rbtl.DataValueField = "PurchaseTypeID"; 
rbtl.DataBind(); 

PS rbtlは常につもりあなたのケースでnullことさ。

+0

お返事ありがとうございます。私がそれを正しくしていないので、私をさらに助けてください。 あらゆる種類のエラーが発生しています。上記のコードを更新しました。 – Kenny

+0

'Repeater2.FindControl'とは別に大丈夫です。 ItemDataBoundイベント内で使用する場合は、e.Row.FindControlを使用する必要があります。 – VDWWD

関連する問題