2011-12-19 10 views
0

私は1つのデータベースにデータを追加すると、追加で、私はCheckBoxListのを持っているように、データベースに従うように、私はそれらを追加した他は、それを編集するために、2ページを持っているカントビューCheckBoxListの

のURL :1,2,3,4,5 と番号は値「キーは、」私は、データベースに値を追加

String values = "";   
foreach (ListItem i in CheckBoxList1.Items) 
{ 
     if (CheckBoxList1.Items.Count == 1) 
      values += i.Value; 
     else 
     if (i.Selected) 
     { 
      values += i.Value + ","; 

     } 
} 

し、このコードを使用

チェックボックスからであり、それ完璧に働いた 今私の問題は編集ページにありますデータベースからの確認ボックスを表示したい、私はこれを使用しますが、ページの読み込みに

を働いていないその

protected void Page_Load(object sender, EventArgs e) 
{ 

     if (!Page.IsPostBack) 
     { 
      ... connection to the database .. etc 

      try 
      { 
       con.Open(); 
       rd = cmd.ExecuteReader(); 
       if (rd.Read()) 
       {     
        String values = rd["urls"].ToString();//workes perfect 

        string[] arr = values.Split(',');//works perfect 
        int x = CheckBoxList1.Items.Count;//this will get me a zero 

        foreach (ListItem item in CheckBoxList1.Items)// doesnt enter here 
        { 
         foreach (string s in arr) 
         { 
          if (item.Text == s) 
          { 
           item.Selected = true; 
          } 
         } 
        } 

      .... //exceptions handling 

aspxページ

<asp:CheckBoxList ID="CheckBoxList1" runat="server" DataSourceID="urls_ds" 
         DataTextField="name" DataValueField="id"> 
    </asp:CheckBoxList> 
    <asp:SqlDataSource ID="urls_ds" runat="server" 
     ConnectionString="<%$ ConnectionStrings:testing_cs %>" 
     SelectCommand="SELECT * FROM [tbl_urls]"></asp:SqlDataSource> 

私はCheckBoxListのを取得していますのための私のコードSqlDataSourceを使用してデータベースから、私はそれらの項目の数を印刷するようにそれらを見ることができますページの0

問題がありますか?

おかげ

+0

問題は、CheckBoxList1が* empty *(Countプロパティが0を返すという事実による)であるように見えます。その値はどこから来ると思われますか?そのページに定義を投稿してください。 –

+0

私は言ったように、SqlDataSourceを使用してデータベースからデータを取得しており、ページでそれらを見ることができます。 – Peril

+0

投稿したコードは、編集ページのLoadイベント用です。 'CheckBox1'に項目を置くコードはどこですか?それは問題がどこにあるのかと思われるからです。 –

答えて

1

編集:この記事は正確にhttp://forums.asp.net/t/1488957.aspx/1あなたの問題を説明し、ここでは、2つのソリューション

を提供しています私は

if(!Page.IsPostBack) 

見るものであるこれは、ページの新しいコピーであることを意味ので、CheckBoxList1はデータをロードするまで空です。これはあなたのコードの中でさらに起こります。あなたがそれを使用する前にロードすることを確認してください。

編集:SqlDataSourceを使用してコントロールにデータを挿入する場合、コントロールを参照するコントロールがPage_Loadの実行後にバインドすることを覚えておく必要があります。上記のリンクは、(Control.DataBindを手動で呼び出すか、Control.Databoundイベントを処理する)2つの方法を回避します。

+0

SqlDataSourceを使用してデータをロードしていますが、実行したい場合はどこにコードをロードする必要がありますか? – Peril

+0

Page_Loadは、SqlDataSourceがUpdateを実行する前に発生します。そのため、データは存在しません。 –

+0

あなたの答えをありがとう、aspxのための私のコードを見ることができますか? ありがとう – Peril