...
ErrorPanel.Visible = true;
}
}
Панель ошибок описывает проблему с информативным сообщением и содержит второй DetailsView, который привязан к соответствующей строке, чтобы показать текущее значение записи, находящейся под вопросом.
<asp:Panel ID="ErrorPanel" runat="server" Visible="False"
EnableViewState="False">
There is a newer version of this record in the database.<br />
The current record has the values shown below.<br />
<br />
<asp:DetailsView ID="detailsConflicting" runat="server"
AutoGenerateRows="Faise" DataSourceID="sourceUpdateValues" ...>
<Fields>
<asp:BoundField DataFieid="ShipperID" />
<asp:BoundPield DataField="CompanyName" />
<asp:BoundField DataField="Phone" >
</Fields>
</asp:DetailsView>
<br />
* Click <b>Update</b>to override these values with your changes.<br />
* Click <b>Cancel</b>to abandon your edit.</span>
<asp:SqlDataSouree ConnectionString="<%$ ConnectionStrings:Northwind %>"
ID="sourceUpdateValues" runat="server"
SelectCommand="SELECT * FROM Shippers "WHERE (ShipperID = @shipperID)"
OnSelecting"="sourceUpdateValues_Selecting">
<SelectParameters>
<asp:ControlParameter ControlID="detailsEditing" Name="ShipperID"
PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
</asp:Panel>
После этого остается одна последняя деталь. Чтобы сэкономить на накладных расходах, не нужно выполнять повторный запрос второго DetailsVlew, если только это не абсолютно необходимо из-за возникновения ошибки, связанной с параллелизмом. Чтобы реализовать эту логику, код реагирует на событие SqlDataSource.Selecting и отменяет запрос, если панель ошибок в данный момент не видима.
protected void sourceUpdateValues_Selecting(object sender,
SqlDataSourceSelectingEventArgs e)
{
if (!ErrorPanel.Visible)
e.Cancel = true;
}
Чтобы протестировать этот пример, откройте две копии страницы в разных окнах браузера и активизируйте на них режим редактирования одной и той же записи. Примените изменения в первом окне, затем во втором. Когда вы попытаетесь подтвердить изменения во втором окне, появится панель ошибок с предупреждением (рис. 10.24). Затем вы можете либо выбрать продолжение редактирования, щелкнув на ссылке Update (Обновить), либо отменить его, щелкнув на ссылке Cancel (Отмена).
предыдущая следующая страница вначало главы оглавление
479