Все исследования, которые я нашел, говорят о людях, которые не могут заставить это работать (вставить/обновить в DetailsView). Мой код работает при работе через VS2012, но не при копировании сайта на мой веб-сервер.DetailsView Update/Insert работает на localhost, а не на веб-сервере
DetailsView кнопка ссылки и где они работают:
- Edit: Девы и веб-сервер
- Update: Dev только
- Отмена: Дев и веб-сервер
- Удалить: Девы и Web сервер
- Новое: Dev и веб-сервер
- Вставить: Dev только
Когда я скопировать файлы на веб-сервер и запустить его через IE на моем компьютере Update и Вставка кнопки ссылка не делать ничего, когда я нажимаю их, как будто они не привязаны ни к чему. DetailsView будет входить и выходить из режимаредактирования, нажав на кнопку Edit ссылку, а затем Отмена кнопку ссылки. DetailsView будет входить и выходить из режимавставки, нажав на кнопку Новой ссылки, а затем Отмены кнопки ссылки.
Все вышеизложенное прекрасно работает при работе в режиме отладки в VS 2012, и если я просто запустил сайт с помощью localhost, который размещен на моем локальном IIS.
Я проверил настройки между моим локальным IIS и сервером IIS, и они выглядят одинаково.
- web.config
- DefaultAppPool
- настройки сайта, такие как аутентификация, настройки приложений и т.д.
В моем коде ниже вы заметите, что у меня есть 2 набора кнопок ссылок. Те, которые установлены в теге DetailsView, таком как AutoGenerateDeleteButton = "true" и т. Д. У меня также есть кнопка, определенная в конце DetalsView, потому что я хотел больше контролировать их, как подтверждение удаления. Я получаю те же результаты, если я использую их в любом случае (один из них прокомментирован) или если оба определены.
Вот мой код:
<asp:DetailsView
ID="dtvEmployee"
runat="server"
AutoGenerateRows="false"
DataKeyNames="VHRID"
DataSourceID="SqlEmployee"
DefaultMode="ReadOnly"
HeaderStyle-Font-Bold="true"
HeaderStyle-Font-Underline="true"
HeaderText="View Item..."
GridLines="Both" AutoGenerateDeleteButton="true" AutoGenerateEditButton="true" AutoGenerateInsertButton="true">
<Fields>
<%-- VHRID --%>
<asp:BoundField DataField="VHRID" HeaderText="VHRID:" ReadOnly="true" SortExpression="VHRID" Visible="true" InsertVisible="false" />
<%-- Firstname --%>
<asp:TemplateField HeaderText="Firstname:" SortExpression="Firstname">
<ItemTemplate>
<asp:TextBox ID="txtFirstname" runat="server" Text='<%# Bind("Firstname")%>' MaxLength="50" />
<asp:RequiredFieldValidator ControlToValidate="txtFirstname" runat="server"
Display="Dynamic" ForeColor="Red" ID="rfvFirstname"
ErrorMessage="Firstname is a required field." />
</ItemTemplate>
</asp:TemplateField>
<%-- Lastname --%>
<asp:TemplateField HeaderText="Lastname:" SortExpression="Lastname">
<ItemTemplate>
<asp:TextBox ID="txtLastname" runat="server" Text='<%# Bind("Lastname")%>' MaxLength="50" />
<asp:RequiredFieldValidator ControlToValidate="txtLastname" runat="server"
Display="Dynamic" ForeColor="Red" ID="rfvLastname"
ErrorMessage="Lastname is a required field." />
</ItemTemplate>
</asp:TemplateField>
<%-- Username --%>
<asp:TemplateField HeaderText="Username:" SortExpression="Username">
<ItemTemplate>
<asp:TextBox ID="txtUsername" runat="server" Text='<%# Bind("Username")%>' MaxLength="50" />
<asp:RequiredFieldValidator ControlToValidate="txtUsername" runat="server"
Display="Dynamic" ForeColor="Red" ID="rfvUsername"
ErrorMessage="Username is a required field." />
</ItemTemplate>
</asp:TemplateField>
<%-- Email --%>
<asp:TemplateField HeaderText="Email:" SortExpression="Email">
<ItemTemplate>
<asp:TextBox ID="txtEmail" runat="server" Text='<%# Bind("Email")%>' MaxLength="50" />
<asp:RequiredFieldValidator ControlToValidate="txtEmail" runat="server"
Display="Dynamic" ForeColor="Red" ID="rfvEmail"
ErrorMessage="Email is a required field." />
</ItemTemplate>
</asp:TemplateField>
<%-- Title --%>
<asp:TemplateField HeaderText="Title:" SortExpression="Title">
<ItemTemplate>
<asp:TextBox ID="txtTitle" runat="server" Text='<%# Bind("EmpTitle")%>' MaxLength="50" />
<asp:RequiredFieldValidator ControlToValidate="txtTitle" runat="server"
Display="Dynamic" ForeColor="Red" ID="rfvTitle"
ErrorMessage="Title is a required field." />
</ItemTemplate>
</asp:TemplateField>
<%-- Location --%>
<asp:TemplateField HeaderText="Location:" SortExpression="Location">
<ItemTemplate>
<asp:TextBox ID="txtLocation" runat="server" Text='<%# Bind("Location")%>' MaxLength="50" Visible="false" />
<asp:RequiredFieldValidator ControlToValidate="txtLocation" runat="server"
Display="Dynamic" ForeColor="Red" ID="rfvLocation"
ErrorMessage="Location is a required field." />
<asp:DropDownList ID="ddlLocation" runat="server"
OnSelectedIndexChanged="ddlLocation_SelectedIndexChanged"
AutoPostBack="true"
Width="300">
<asp:ListItem Text="PHX" Value="PHX" />
<asp:ListItem Text="DEN" Value="DEN" />
<asp:ListItem Text="LAS" Value="LAS" />
<asp:ListItem Text="NOG" Value="NOG" />
<asp:ListItem Text="RENO" Value="RENO" />
<asp:ListItem Text="TUC" Value="TUC" />
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<%-- Office Number --%>
<asp:TemplateField HeaderText="Office Number:" SortExpression="OfficeNumber">
<ItemTemplate>
<asp:TextBox ID="txtOfficeNumber" runat="server" Text='<%# Bind("OfficeNumber")%>' MaxLength="50" Visible="false" />
<asp:RequiredFieldValidator ControlToValidate="txtOfficeNumber" runat="server"
Display="Dynamic" ForeColor="Red" ID="rfvOfficeNumber"
ErrorMessage="Office Number is a required field." />
<asp:DropDownList ID="ddlOfficeNumber" runat="server"
OnSelectedIndexChanged="ddlOfficeNumber_SelectedIndexChanged"
AppendDataBoundItems="true"
AutoPostBack="true"
CausesValidation="false"
DataSourceID="sqlOfficeNumbers"
DataTextField="OfficeNumber"
DataValueField="Room_Num"
Width="300">
<asp:ListItem Text="None" Value="0"></asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<%-- Office Phone --%>
<asp:TemplateField HeaderText="Office Phone:" SortExpression="OfficePhone">
<ItemTemplate>
<asp:TextBox ID="txtOfficePhone" runat="server" Text='<%# Bind("OfficePhone")%>' MaxLength="50" />
<asp:RequiredFieldValidator ControlToValidate="txtOfficePhone" runat="server"
Display="Dynamic" ForeColor="Red" ID="rfvOfficePhone"
ErrorMessage="Office Phone is a required field." />
<asp:RegularExpressionValidator ControlToValidate="txtOfficePhone" runat="server"
Display="Dynamic" ForeColor="Red" ID="revOfficePhone"
ValidationExpression="^[2-9]\d{2}\d{3}\d{4}$" EnableClientScript="false"
ErrorMessage="Office Phone must be 9 numeric digits." />
</ItemTemplate>
</asp:TemplateField>
<%-- Show Photo --%>
<asp:TemplateField HeaderText="Show Photo:" SortExpression="ShowPhoto">
<ItemTemplate>
<asp:CheckBox ID="chkShowPhoto" runat="server" Checked='<%# Bind("ShowPhoto")%>' />
</ItemTemplate>
</asp:TemplateField>
<%-- Status --%>
<asp:TemplateField HeaderText="Status:" SortExpression="Status">
<ItemTemplate>
<asp:TextBox ID="txtStatus" runat="server" Text='<%# Bind("Status")%>' MaxLength="50" Visible="false" />
<asp:RequiredFieldValidator ControlToValidate="txtStatus" runat="server"
Display="Dynamic" ForeColor="Red" ID="rfvStatus"
ErrorMessage="Status is a required field." />
<asp:DropDownList ID="ddlStatus" runat="server"
OnSelectedIndexChanged="ddlStatus_SelectedIndexChanged"
AutoPostBack="true"
Width="300">
<asp:ListItem Text="Active" Value="Active" />
<asp:ListItem Text="Terminated" Value="Terminated" />
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<%-- LinkButtons and the modes they show up in --%>
<asp:TemplateField>
<ItemTemplate>
<%-- DetailsView - ReadOnly Mode --%>
<asp:linkbutton ID="lnkEdit" Text="Edit" runat="server" CommandName="Edit" CausesValidation="false"></asp:linkbutton>
<asp:LinkButton ID="lnkDelete" Text="Delete" runat="server" CommandName="Delete" CausesValidation="false" OnClientClick="return confirm('Are you sure you want to delete this record?');"></asp:LinkButton>
<asp:linkbutton ID="lnkNew" Text="New" runat="server" CommandName="New" CausesValidation="false"></asp:linkbutton>
</ItemTemplate>
<EditItemTemplate>
<%-- DetailsView - Edit Mode --%>
<asp:linkbutton ID="lnkUpdate" Text="Update" runat="server" CommandName="Update"></asp:linkbutton>
<asp:linkbutton ID="lnkCancel" Text="Cancel" runat="server" CommandName="Cancel" CausesValidation="false"></asp:linkbutton>
</EditItemTemplate>
<InsertItemTemplate>
<%-- DetailsView - Insert Mode --%>
<asp:linkbutton ID="lnkInsert" Text="Insert" runat="server" CommandName="Insert"></asp:linkbutton>
<asp:linkbutton ID="lnkCancel" Text="Cancel" runat="server" CommandName="Cancel" CausesValidation="false"></asp:linkbutton>
</InsertItemTemplate>
</asp:TemplateField>
</Fields>
</asp:DetailsView>
Вот SqlDataSource:
<%-- For DetailsView --%>
<asp:SqlDataSource ID="SqlEmployee" runat="server"
ConnectionString="<%$ ConnectionStrings:DWStageConnectionString %>"
DeleteCommand="UPDATE [MasterTempEmployeeStage] SET
[IsDeleted] = 1
WHERE [VHRID] = @VHRID"
InsertCommand="INSERT INTO [MasterTempEmployeeStage] (
[Firstname], [Lastname]
, [Location], [Username]
, [Email], [EmpTitle]
, [OfficeNumber], [OfficePhone]
, [ShowPhoto], [Status]
) VALUES (
@Firstname, @Lastname
, @Location, @Username
, @Email, @EmpTitle
, @OfficeNumber, @OfficePhone
, @ShowPhoto, @Status);
SELECT @VHRID = SCOPE_IDENTITY();"
SelectCommand="SELECT [VHRID]
, [Firstname], [Lastname]
, [Location], [Username]
, [Email], [EmpTitle]
, [OfficeNumber], [OfficePhone]
, [ShowPhoto], [Status]
FROM [MasterTempEmployeeStage]
WHERE [VHRID] = @VHRID
ORDER BY [Lastname], [Firstname]"
UpdateCommand="UPDATE [MasterTempEmployeeStage] SET
[Firstname] = @Firstname
, [Lastname] = @Lastname
, [Location] = @Location
, [Username] = @Username
, [Email] = @Email
, [EmpTitle] = @EmpTitle
, [OfficeNumber] = @OfficeNumber
, [OfficePhone] = @OfficePhone
, [ShowPhoto] = @ShowPhoto
, [Status] = @Status
WHERE [VHRID] = @VHRID">
<SelectParameters>
<asp:ControlParameter ControlID="ddlEmployees" PropertyName="SelectedValue" Name="VHRID" />
</SelectParameters>
<DeleteParameters>
<asp:ControlParameter ControlID="ddlEmployees" PropertyName="SelectedValue" Name="VHRID" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="VHRID" Direction="Output" Type="Int32" />
<asp:Parameter Name="Firstname" Type="String" />
<asp:Parameter Name="Lastname" Type="String" />
<asp:Parameter Name="Location" Type="String" />
<asp:Parameter Name="Username" Type="String" />
<asp:Parameter Name="Email" Type="String" />
<asp:Parameter Name="EmpTitle" Type="String" />
<asp:Parameter Name="OfficeNumber" Type="String" />
<asp:Parameter Name="OfficePhone" Type="String" />
<asp:Parameter Name="ShowPhoto" Type="String" />
<asp:Parameter Name="Status" Type="String" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="Firstname" Type="String" />
<asp:Parameter Name="Lastname" Type="String" />
<asp:Parameter Name="Location" Type="String" />
<asp:Parameter Name="Username" Type="String" />
<asp:Parameter Name="Email" Type="String" />
<asp:Parameter Name="EmpTitle" Type="String" />
<asp:Parameter Name="OfficeNumber" Type="String" />
<asp:Parameter Name="OfficePhone" Type="String" />
<asp:Parameter Name="ShowPhoto" Type="String" />
<asp:Parameter Name="Status" Type="String" />
<%--<asp:Parameter Name="VHRID" Type="Int32" />--%>
<asp:ControlParameter ControlID="ddlEmployees" PropertyName="SelectedValue" Name="VHRID" />
</UpdateParameters>
</asp:SqlDataSource>
Это также помогло. http://stackoverflow.com/questions/19288749/detailsview-itemcommand-event-not-firing –