В моем тесте с вашим кодом я добавил свойство showPlayOnHover , чтобы заявить как ложное, чтобы обрабатывать кнопку, появляющуюся при наведении.
Добавлен метод рендеринга или нет кнопки:
handlePlayOnHover = (song) => {
this.setState({
showPlayOnHover: !this.state.showPlayOnHover,
isPlaying: !this.state.isPlaying
})
this.handleSongClick(song)
}
И структура рендеринга песни была обновлена до:
<tr
className="song" key={index}
onClick={() => this.handleSongClick(song)}
onMouseOver={() => this.handleOnHover(song)}
onMouseOut={() => this.handleOnHover(song)}
>
<td className="song-actions">
<button>
<span className="song-number">
{!this.state.showPlayOnHover ? index+1 : <span className="ion-play"></span>}
</span>
<span className="ion-play"></span>
<span className="ion-pause"></span>
</button>
</td>
<td className="song-title">{song.title}</td>
<td className="song-duration">{song.duration}</td>
</tr>
Метод handleOnHover take заботится об условном отображении кнопки воспроизведения при наведении и номера песни при наведении.
Вы можете скопировать строку подключения, созданную в App.Config сборки DAL, в раздел connectionStrings файла web.config.
Вы можете сохранить строку подключения в сборке dll, но вам не следует развертывать его вместе с веб-сайтом.
Вам нужно будет скопировать всю строку подключения. Он должен выглядеть так:
<add name="DataEntities" connectionString="metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=xxx;Initial Catalog=xxx;User Id=xxx;Password=xxx;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
Он должен включать всю информацию о том, где существуют файлы сопоставления.
В моем случае, хотя я использую L2S вместо L2E, но рекомендация должна оставаться в силе. У меня есть обобщенная библиотека конфигурации, которая питается из файла XML. Когда требуется контекст данных, у каждого объекта данных есть метод, подобный следующему. Конечно, при желании это можно было бы легко создать по шаблону.
private static string _conStr = null;
private static CalendarsAndListsDataContext GetDataContext()
{
if (_conStr == null)
{
_conStr = ConfigurationLibrary.Config.Settings().GetConnectionString("liveConString");
}
return new CalendarsAndListsDataContext(_conStr);
}
Самый большой недостаток - изменение строки подключения требует перезапуска приложения, но в моем случае это не проблема.