1

react-bootstrap-table (var ReactBsTable = require("react-bootstrap-table")) を使用しています。
クリックすると、このボタン行に対応するIDまたは行データを表示するボタンを追加しようとしました。jqueryを使用しましたが、ボタンにIDを付けましたが、これらのボタンはすべて同じID(validatebutton)を持つため、最初の1つだけが機能し、残りは機能しません。多くのコンポーネントに同じIDを設定できないためです。

任意のアイデアをお願いします。

<BootstrapTable data={this.state.activities} pagination={true} hover={true} search={true} selectRow={selectRowProp} options={options}>
<TableHeaderColumn isKey={true} dataField="id" hidden {true}>ID</TableHeaderColumn>
<TableHeaderColumn dataField="title" dataSort={true}>Title</TableHeaderColumn>
<TableHeaderColumn dataField="adress" dataSort{true}>Adress</TableHeaderColumn>
<TableHeaderColumn dataField="button" dataFormat={this.buttonFunction}></TableHeaderColumn>

</BootstrapTable>

buttonFunction: function (cell, row) {
    var today = new Date().toISOString();
    if (row.status === "En cours") {
        if (row.dateEnd > today) {
            return <Alert_Validate></Alert_Validate>;
        } else {
            return <label>
                <button type="button" id="validatebutton" onClick=     {this._validateFunction} className="bbtn btn-primary btn-sm"><i className="fa fa-check fa-1x" aria-hidden="true"></i>
                </button>
            </label>

        }
    }
},

 _validateFunction: function () {
    var userid=this.props.params.id;
    $("#validatebutton").click(function() {
        var $row = $(this).closest("tr");
         var activityid = $row.find("td:nth-child(2)");
        console.log("activity id :"+activityid.text());
    });
4

1 に答える 1

0

DOM を介してデータを検索する代わりに、それをパラメーターとして _validateFunction に渡すことができます。

buttonFunction(cell, row) {      
  return <label>
            <button type="button" 
                    id="validatebutton" 
                    onClick={() => {this._validateFunction(row)}} 
                    className="bbtn btn-primary btn-sm">
                      Click Me
            </button>
         </label>        
}

これを示すフィドルを次に示します: https://jsfiddle.net/omerts/5asms7j7/

于 2016-06-08T15:48:45.633 に答える