#c# #asp.net
#c# #asp.net
Вопрос:
У меня есть asp:Formview
asp:Image
элемент, который содержит ImageURL
DataBound
элемент, для которого при загрузке страницы с использованием некоторого кода C # установлено отдельное значение, но когда режим Formview переключается на редактирование — значение ImageUrl теряется, хотя я снова установил его в методе OnModeChanged. Код выглядит следующим образом:
aspx
<asp:FormView ID="accountFormview" runat="server" DefaultMode="ReadOnly" OnModeChanged="accountFormview_ModeChanged" DataSourceID="UserDataSource" DataKeyNames="User_Id" style="margin-right: 1px; float:left;" Width="512px">
<EditItemTemplate>
<asp:Image ID="imgAvatar" runat="server" ImageUrl="~/Images/defaultAccountImage.png" Height="100px" BorderColor="#003399" BorderWidth="1px" />
<asp:TextBox ID="txtAvatarFilePath" runat="server" Text='<%# Bind("Avatar_Img_Path") %>'>
</asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Image ID="imgAvatar" runat="server" Height="100px" BorderColor="#003399" BorderWidth="1px"/>
<asp:TextBox ID="txtAvatarFilePath" runat="server" Text='<%# Bind("Avatar_Img_Path") %>'>
</asp:TextBox>>
</ItemTemplate>
</asp:FormView>
C#
string avatarFileName = ((TextBox)accountFormview.FindControl("txtAvatarFilePath")).Text;
Image avatarImage = avatarImage = (Image)accountFormview.FindControl("imgAvatar");
string saveFilePath = @"\" ConfigurationManager.AppSettings["FileServer"].ToString() @"Images"
if( File.Exists(saveFilePath "\" avatarFileName))
{
avatarImage.ImageUrl = saveFilePath "\" avatarFileName;
}
else
{
avatarImage.ImageUrl = @"~ImagesdefaultAccountImage.png";
}
Пример:
Страница загружена — появляются изображения собак
Выберите редактировать — пропал
Отменить возврат только для чтения — снова исчез
Я не могу привязать ImageUrl к данным по умолчанию, поскольку для этого необходимо использовать ConfigurationManager. Код C # вызывается при загрузке страницы и отлично настраивает изображения, но как только режим Formview изменяется — они устанавливаются по умолчанию, даже если у меня есть метод OnModeChanged, который также вызывает код C #.
Ответ №1:
Найдено исправление для этого, добавив изменение asp:FormView
для использования OnPreRender
вместо OnModeChanged
вызова отображения изображений. Итак, исправленный код выглядит так:
<asp:FormView ID="accountFormview" runat="server" DefaultMode="ReadOnly"
OnPreRender="accountFormview_ModeChanged"
DataSourceID="UserDataSource" DataKeyNames="User_Id" style="margin-right: 1px; float:left;" Width="512px">