2016-05-26 10 views
1

私はasp.netプロジェクトを持っており、オブジェクトを呼び出すことができます。 すべてのオブジェクトがリピータに作成されます。ここではポストバック時にチェックボックスがチェックされていませんASP NET

<section class="topbar"> 
    <asp:Button runat="server" ID="btnSave" OnClick="btnSave_OnClick" Text="Save" /> 
</section> 

<asp:Repeater runat="server" id="gwList"> 
    <ItemTemplate> 
     <div class="block"> 
      <input type="checkbox" runat="server" ID="chkObjectSelected" value='<%# ((Object.Object)Container.DataItem).Id %>'/> 

      <label><%# ((Object.object)Container.DataItem).Title %></label> 

     </div> 
    </ItemTemplate> 
</asp:Repeater> 

は問題が来るポストバックで選択され、選択したオブジェクトのどれも設定されません。この

<asp:CheckBox runat="server" ID="chkObjectSelected" Value='<%# ((Object.Object)Container.DataItem).Id %>'/> 

<input type="checkbox" runat="server" ID="chkObjectSelected" value='<%# ((Object.Object)Container.DataItem).Id %>'/> 

を交換

protected void btnSave_OnClick(object sender, EventArgs e) 
{ 
    List<string> objectIdSelected = new List<string>(); 

    foreach (RepeaterItem oneObject in gwList.Items) 
    { 
     HtmlInputCheckBox chkObj = (HtmlInputCheckBox)carAd.FindControl("chkObjectSelected"); 

     if (chkObj.Checked) 
     { 
      objectIdSelected.Add(chkObj.Value.ToString()); 
     } 
    } 
} 
+1

リピータに 'Page_Load'を設定していますか?もしそうなら、それが 'if(!IsPostBack)'の条件の中にあることを確認してください。 – ConnorsFan

+0

@ConnorsFan - これが私の問題の解決策でした! – Thugge

答えて

2

試み、これにコードを変更します:ここで私は、オブジェクトがチェックされているかどうかを判断するために使用するコードです

protected void btnSave_OnClick(object sender, EventArgs e) 
{ 
    List<string> objectIdSelected = new List<string>(); 

    foreach (RepeaterItem oneObject in gwList.Items) 
    { 
     CheckBox chkObj = (CheckBox)oneObject.FindControl("chkObjectSelected"); 

     if (chkObj.Checked) 
     { 
      objectIdSelected.Add(chkObj.Attributes["Value"].ToString()); 
     } 
    } 
} 
+0

これは期待どおりに動作しません。値はチェックボックスコントロールに追加されますが、決して "checked"として設定されることはありません。どういうわけか、リピータアイテム(この場合はチェックボックス)がチェックされたプロパティを更新しないという気がしますか? – Thugge

+0

@Thuggeあなたはアップデートパネルを使用していますか? – Kahbazi

+0

いいえ私は更新パネルを使用していません。 – Thugge

0

!Page.IsPostback "は、Page_Loadイベントのロジックを条件とします。おそらく起こっていることは、ボタンがポストバックを引き起こし、page_loadがボタンクリックイベントが発生する前にデフォルト(チェックされていない)値をリロードすることです。

関連する問題