2016-04-05 42 views
1

私はこのGridViewのGridViewにチェックボックスを追加するにはどうすればよいですか?

<asp:GridView ID="gvValues" runat="server" Width="100%" AllowPaging="True" PagerSettings-Mode="NumericFirstLast" OnRowCommand="gvValues_RowCommand" 
AutoGenerateColumns="False" CellPadding="0" PageSize="15" ItemType="Product" CssClass="table-striped table-condensed table table-bordered table-hover" 
    OnRowDataBound="gvValues_RowDataBound" OnPageIndexChanging="gvValues_PageIndexChanging" meta:resourcekey="gvValuesResource1" EmptyDataText="No Products in your Pos"> 
<EmptyDataRowStyle Font-Bold="True" Font-Size="16pt" ForeColor="Red" /> 
     <RowStyle Wrap="true" HorizontalAlign="Center" /> 
     <Columns> 
     <asp:TemplateField HeaderText="#"> 
      <ItemTemplate><%# gvValues.PageSize*gvValues.PageIndex+ Container.DisplayIndex+1 %> 
       <asp:CheckBox ID="chkProduct" runat="server" CssClass="chkProduct"/> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="online" meta:resourcekey="Online"> 
     <ItemTemplate > 
       <asp:CheckBox ID="chkProductonline" runat="server" /> 
      </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 

私はproduct.onは、チェックボックス

1つのチェックであれば今、私は製品のリストからの読み取りに応じて、チェックボックス chkProductonlineをチェックする必要が

products = GetProduct();  
    gvValues.DataSource = products; 
    gvValues.DataBind(); 

としてC#の を使用してそれを処理してい

どうすればいいですか?

+0

'add checkbox'とはどういう意味ですか?それは既にGridViewにありますか? –

答えて

1

gvValues_RowDataBoundメソッド(コードビハインド)では、チェックボックスコントロールを取得して現在のデータアイテムからデータを取り込むことができます。ヘッダー行、フッター行などではないことを確認するために、現在の行のタイプをチェックすることをお勧めします。これは、実際のアイテム行に対してのみ行うようにしたいからです。これは次のようになります:

private void gvValues_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    // Make sure current row is a data row (not header, footer, etc.) 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     // Get checkbox control 
     var chkProductonline= e.Row.FindControl("chkProductonline") as CheckBox; 

     // Get data item (recommend adding some error checking here to make sure it's really a Product) 
     var product = e.Row.DataItem as Product 

     // Set checkbox checked attribute 
     chkProductonline.Checked = product.on; 
    } 
} 
+0

ありがとうございます。チェックボックスを知っていますか?chkProductonline_CheckedChangedの 'chkProduct'の値 –

+0

CheckedChangedのようなポストバックをトリガーするイベントは、リピーター、グリッドビューなどで扱いにくいです。クライアント側のイベント(例えばJavaScriptを実行する)が必要な場合は、それだけで十分です。しかし、リピータ内のチェックボックスが変わったときに返信する必要がある場合は、それは別の話です。私はおそらく、コマンド列を作成し、チェックボックスが変わったときに必要な処理を行うコードの背後にあるメソッドを呼び出すようにボタンの1つを設定することから始めます。次に、CSSとJSを使用してその列を非表示にし、チェックボックスが変更されたらボタンをクリックします。 – TheRotag

+0

私はSoryyです。私はあなたを理解していませんでした 'protected void chkProductonline_CheckedChanged(オブジェクト送信者、EventArgs e) { var chkProductonline = FindControl(" chkProductonline ")をCheckBoxとして返します。 bool ischeck = chkProductonline.Checked; var chkProduct = FindControl( "chkProduct")をCheckBoxとして使用します。 文字列vali = chkProduct.ClientID; } ' オンラインでチェックされているかどうか、別のチェックボックスの値が –

関連する問題